您可以控制令牌内的信息 . 查看文章中的SimpleAuthorizationServerProvider类:
var identity = new ClaimsIdentity(context.Options.AuthenticationType);
identity.AddClaim(new Claim("sub", context.UserName));
identity.AddClaim(new Claim("role", "user"));
使用声明存储您需要的与用户,用户名或角色有关的任何内容,这就是您所引用的文章中发生的情况 . 生成的令牌已包含有关用户的信息 .
这取自文章:
第二种方法“GrantResourceOwnerCredentials”负责验证发送到授权服务器的令牌 endpoints 的用户名和密码,因此我们将使用我们之前创建的“AuthRepository”类并调用方法“FindUser”来检查用户名和密码是有效的 . 如果凭证有效,我们将创建“ClaimsIdentity”类并将认证类型传递给它,在我们的案例中为“bearer token”,然后我们将添加两个声明(“sub”,“role”),这些将包括在内在签名的令牌中 . 您可以在此处添加不同的声明,但令牌大小肯定会增加 .
这就是您不需要将令牌存储在任何位置的原因,令牌是自包含的,并且所有内容都以加密形式存储在其中 . 不要忘记,在添加包含用户名的声明之前,您已经验证了用户名和密码,因此您可以保证为有效的用户/密码组合正确创建令牌 . 当然,您不希望将密码存储在令牌内,令牌的整个要点是避免这样做 . 将密码始终传递给API确实增加了被盗的风险,令牌更好 .
最后,令牌在你控制的一段时间后到期,通常它们是短暂的,所以即使有人确实拿到了它们也不会持续很长时间 .
如果您通过https呼叫处理授权标头的方式,请注意如何传递令牌,那么您将受到保护,并且标头将被加密 . 这里的要点是永远不要在基本的http上发出这样的调用 .
您引用的文章的作者是该特定领域备受尊重的权威,目前是Microsoft MVP,您基本上处于良好的状态 . 继续阅读他的文章,但要注意细节 .
-----------与JWT格式相关的澄清--------------
查看创建令牌的调用并查看屏幕截图中返回的信息 .
在我的示例中,令牌包含实际的加密令牌,令牌类型,它到期的秒数,作为ClientID的受众,发布时间以及何时到期 .
这只是一个令牌的例子,你的看起来可能有点不同,但你得到了我希望的想法 . 使用邮递员查看令牌中的内容
在涉及到OAuth2时,有许多概念需要理解,它确实需要一些研究和实践 .
简而言之,你要求一个带有A Basic Authorization Header的令牌,你得到令牌,它告诉你它是什么类型,在我的情况下它是Bearer,所以这是我的下一个授权标头,用于对受保护资源的任何调用 .
我的建议是从小开始,一步一步,使用邮递员 Build 你的电话,并了解正在发生的事情 . 一旦掌握了这些知识,就会更容易进步 . 花了我大约6个星期的时间围绕所有概念,让我的第一次工作变得有效,但现在最多需要几个小时 . 祝好运