码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2015-07-14 23:51:15      阅读:448      评论:0      收藏:0      [点我收藏+]

标签:

在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

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

标签:

原文地址:http://www.cnblogs.com/dudu/p/4646922.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!