OAuth访问令牌和刷新令牌创建
我为应用程序实现了我自己的OAuth身份验证系统(具有refresh_token支持),并且我有一些关于如何执行此操作的问题:
如果我错了,什么时候以及如何使用client_secret? 完整的答案和具体的例子将被“奖励”。
我建议在这里阅读OAuth2规范:OAuth2规范RFC6749。 这可能需要一段时间,但如果您删除不需要的位并减少数据量,则有很多有用的示例。
首先 , 客户端标识符可以是任何您想要的字符串,但它应该对每个客户端都是唯一的。 如果您愿意,甚至可以成为客户的选择。 客户端秘密应该是一个密码强的随机字符串。 这里是你如何在C#中生成一个:
RandomNumberGenerator cryptoRandomDataGenerator = new RNGCryptoServiceProvider();
byte[] buffer = new byte[length];
cryptoRandomDataGenerator.GetBytes(buffer);
string uniq = Convert.ToBase64String(buffer);
return uniq;
第二 ,OAuth的重点在于允许外部应用程序代表您执行操作,而不要求您提供凭据。 所以,你需要实现一个认证服务器来为你做部分日志记录。 用户打开应用程序并获得使用您的网站登录的选项。 一旦用户键入他的凭证,您就可以访问令牌并刷新令牌。 然后,应用程序可以简单地使用令牌来代表用户执行操作。 我写了一个关于高效的OAuth2.0服务器/提供者如何工作的答案? 这解释了如何构建访问令牌。
请记住,刷新令牌和访问令牌的生命周期纯粹取决于您打算如何使用它们以及您的安全框架是什么样子。
最后 ,刷新标记也可以是HMAC编码的字符串/ JSON对象,正如我在链接问题的答案中所解释的。 您可以拥有随机刷新令牌和大型后端存储,以保证它能够验证传入请求中的令牌,或者具有HMAC编码的字符串以提高安全性/减少对解密/加密令牌的存储要求/延迟。
另外,请确保你经历了所有的流程,也可能是RFC,如Lukos所述。
链接地址: http://www.djcxy.com/p/8411.html上一篇: OAuth access token and refresh token creation
下一篇: Javascript access to Location header's URL fragment for OAuth 2