文章出處

在 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


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜

    大師兄 發表在 痞客邦 留言(0) 人氣()