Ser*_*erg 2 asp.net-identity asp.net-core openiddict
请解释一下OpenIddict中Applications表的用法.我正在关注这个很棒的教程http://capesean.co.za/blog/asp-net-5-jwt-tokens/ 它完美无缺.我误解了为OpenIddict添加的Applications表的功能.
目前,我的前端(Angularjs)+后端(带有ASP.NET Core和OpenIddict的Web.API)在一台服务器上运行良好.前端接收令牌并在请求中使用它.后端生成令牌并对其进行评估.一切都很好,但Applications表没有任何记录.
谢谢.
该Applications表包含允许使用您的身份服务器的OAuth2客户端应用程序.
当使用交互流程(如授权代码或隐式)时,必须添加新条目,因为客户端应用程序必须发送有效client_id:如果client_id缺少授权请求或与您完全信任的应用程序(即应用程序)不对应,OpenIddict将拒绝授权请求存储在Applications表中).
同样的规则适用于客户端凭据授权,这也需要有效client_id.
相比之下,有一种情况是发送a client_id不是强制性的:当使用资源所有者密码凭证授权时,如您提到的博客文章中所示.
该规范明确规定,一个客户端应用程序做出令牌请求可派client_id,这意味着该参数是不是强制性的.
客户端可以在向令牌端点发送请求时使用"client_id"请求参数来标识自身.
如果无法client_id从令牌请求中提取,则OpenIddict无法确定应用程序的标识.在这种情况下,将client_id跳过相关的检查,并在不使用Applications表的情况下处理请求.这就是为什么您的应用程序无需填充Applications表格即可运行的原因.
虽然对于日志记录有用,但发送client_id不会使grant_type=password请求更安全,因为每个人都可以通过重用它来模拟应用程序client_id,除非该应用程序被声明为机密并被分配了客户端凭据(仅读取"服务器端应用程序") .在这种情况下,恶意调用者无法在不知道的情况下发送有效的令牌请求client_secret.
在OpenIddict中,还有一种情况是添加显式应用程序注册很有用:使用内省中间件来验证访问令牌(而不是JWT承载中间件).
根据规范的要求,调用者必须进行身份验证才能使用内省端点:如果OpenIddict无法在Applications表中找到相应的条目,则请求将被拒绝,内省中间件将永远不会工作.
| 归档时间: |
|
| 查看次数: |
1232 次 |
| 最近记录: |