oauth-2.0 - 为什么 IdentityServer4 演示应用程序的隐式客户端流程会向我发回与 id_token 相同的 access_token?
问题描述
我正在使用参考IdentityServer4
演示项目中定义的内存中客户端的变体,并且在我登录到 Identity Server 并被重定向后,URI 使得id_token
和access_token
是完全相同的 JWT。
这是一个明智的行为吗?为什么你希望id_token
andaccess_token
永远一样?也许如果你不关心access_token
?
解决方案
不确定您的意思是完全相同的 JWT。但是访问令牌和 ID 令牌都可以作为 JWT 令牌出现。
一个很好的例子是 Azure AD 的 OAuth 流。根据文档,成功的令牌响应以 JWT 格式(参考)返回一个访问令牌和一个 id 令牌(是的,Azure 确实为 OAuth auth.code flow 发送了一个)。但它们的内容可能不同。例如,一个可能是已签名的 JWT,而另一个则不是。
使用 JWT 的原因是它们的自包含性质。例如,可以从客户端应用程序端以及受保护的 API 端轻松完成令牌验证。
通常,如果访问令牌和 ID 令牌都是 JWT,它们可能会因声明而异。例如,受众声明 ( "aud"
) 可能会根据令牌的目标受众而有所不同。
推荐阅读
- webpack - 我怎样才能让 webpack.config.babel.js 工作?
- perl - 如何在perl中匹配多行
- angular - Angular / Ivy 错误:错误:Token InjectionToken XXXXXXXXX 缺少 ɵprov 定义
- python - kivy buildozer 编译错误 pythonforandroid.toolchain
- python - odoo上的postgresql启动问题
- google-cloud-messaging - 我从谷歌的 FCM 收到通知,但我的 messageBody 是乱码。如何解决?
- reactjs - 独立于 URL 路径在 React 中动态渲染 AEM 页面
- javascript - 希望用连字符将它们连接成一个字符串
- html - 如何避免 Instagram 嵌入以增加移动设备上容器 div 的宽度?
- laravel - 如何在函数中使用带有 3 个 where 子句的 Laravel?