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 = - ((text.Length + ) % );
if (padding == )
{
return text;
}
return text + new string('=', padding);
}

对于 client secret 与 refresh token 的生成,OWIN OAuth 没有提供现成的方法,我们用的是 RNGCryptoServiceProvider,代码如下:

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

【参考资料】

Katana source code

How to generate OAuth 2 Client Id and Secret

上一篇:redis中lua脚本的简单使用


下一篇:codeforces 558B Amr and The Large Array-yy