標籤:
在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的產生