ASP.NET OAuth:access token的加密解密,client secret與refresh token的生成


在 ASP.NET OWIN OAuth(Microsoft.Owin.Security.OAuth)中,access token 的默認加密方法是:

1) System.Security.Cryptography.DpapiDataProtector.Protect()

2) Convert.ToBase64String()

3) .TrimEnd('=').Replace('+', '-').Replace('/', '_');

access token 的默認解密方法是:

1) System.Security.Cryptography.DpapiDataProtector.Unprotect()

2) Pad(text.Replace('-', '+').Replace('_', '/'));

3) Convert.FromBase64String()

上面代碼中用到的 Pad 方法的實現代碼如下:

private static string Pad(string text)
{
    var padding = 3 - ((text.Length + 3) % 4);
    if (padding == 0)
    {
        return text;
    }
    return text + new string('=', padding);
}

對於 client secret 與 refresh token 的生成,OWIN OAuth 沒有提供現成的方法,我們用的是 RNGCryptoServiceProvider,代碼如下:

RandomNumberGenerator cryptoRandomDataGenerator = new RNGCryptoServiceProvider();
byte[] buffer = new byte[96];
cryptoRandomDataGenerator.GetBytes(buffer);
string secretOrToken = Convert.ToBase64String(buffer)
    .TrimEnd('=').Replace('+', '-').Replace('/', '_');

【參考資料】

Katana source code

How to generate OAuth 2 Client Id and Secret


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM