oauth - 有多个资源时使用 Auth2 进行身份验证
问题描述
我需要实现用户的单点登录,它可以从几个不同的服务中获取服务。
当只有一个服务时,用户可以从客户端登录,将请求发送到后端,将 URL 返回到 JWT 令牌颁发服务器,他可以从中获取令牌,然后将其发送回 BE他现在已通过身份验证。
现在的变化是,他需要得到更多的服务。每个服务都有自己的前端和后端,但每个人都使用相同的发行者。这意味着有 FE 和 BE 的服务,并且还有另一个用于身份验证的通用 BE。
在场景中进行身份验证的正确流程是什么?通用 BE 能否为每个所需服务的客户端颁发令牌?或者 BE 应该使用服务的 BE url 响应客户端,并让客户端自己从每个服务发送身份验证令牌响应?或者是其他东西?
解决方案
我假设您的意思是 OpenID Connect,因为 OAuth2.0 不用于身份验证并且不需要使用 JWT。此外,在您的场景中,没有多个资源,而是多个客户端/依赖方。
使用 OpendID Connect Implicit 流,颁发者最终将向用户的浏览器发送一个 id 令牌 (JWT)。此 JWT 可用于对服务进行身份验证。每个 JWT 都将包含一个aud
(受众)声明,以标识它应该用于的服务。
使用授权码流程,颁发者最终将向用户的浏览器发送一个授权码。用户将代码发送到服务,服务会将代码及其客户端 ID 发送给颁发者,以换取 ID 令牌 (JWT) 和访问令牌。
在这两种情况下,服务都会使用(颁发者)声明识别最终用户iss
,并通过检查签名、到期和受众来验证 JWT。
推荐阅读
- c# - NSwag (Swagger) 创建区分大小写的 swagger 文件导致参数名称不一致
- c++ - 二维液体作为光源
- python - 将任何其他列附加到前三列
- python - 使用 python 进行多处理:保存“池化”函数的对象
- c# - C# WPF 无限期存储连接凭据以进行可能的重新连接
- c# - 什么在 c# MSTest 单元测试中调用 Dispose() 方法?
- excel - 通过 VBA 将 SharePoint 列表导入 Excel
- angular - 为什么我的 Angular“英雄之旅教程”没有渲染任何东西
? - python - Haar Cascade:识别圆形和椭圆
- amazon-web-services - 将处理后的消息重新发送到 Amazon SQS 队列