zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    2-4 递增链表的插入 链表
    KMPnext数组自看
    Shortest Prefixes POJ
    Xor Sum HDU
    Immediate Decodability HDU
    Repository HDU
    "strcmp()" Anyone? UVA
    Remember the Word UVALive
    A Magic Lamp HDU
    Check Corners HDU
  • 原文地址:https://www.cnblogs.com/dudu/p/4646922.html
Copyright © 2011-2022 走看看