我正在使用 IdentityServer4 ,目标是保护资源 api 并公开组织内部的身份服务器。
所以实际上我有这个元素:
我想使用用户角色访问的范围和单个操作来保护我的 API。例如我有这个 api:
- API 1 (Scope API 1)
- Action1.1 <-- Only admin
- Action1.2 <-- Only manager
- Action1.3 <-- Only manager
- API 2 (Scope API 2)
- Action2.1 <-- Admin and manager
- Action2.2 <-- Only users
- Action2.3 <-- Only users
我知道 OAuth2 协议用于授权(及其 access_token),而 OpenID Connect 丰富了支持身份验证的 OAuth2 协议(及其 Identity_token)。
我想知道实现我的目标的最佳实践是什么。我找到了两个选择:
最佳实践是什么?有任何意见欢迎欢迎
谢谢
我认为,您不应该将 ID 令牌发送到您的资源。 ID 令牌仅适用于客户端应用程序。客户端解析令牌的内容并使用用户的信息。访问令牌的目的是通知 API 令牌的持有者已被授权访问 API 并根据令牌中的范围声明执行一组预定的操作。
另一点是根据 OpenID Connect 规范,ID 令牌的受众(由
aud
声明表示)必须是发出身份验证请求的应用程序的客户端 ID。如果不是这种情况,您不应信任该令牌。相反,API 期望具有 aud
值的令牌等于 API 的唯一标识符。因此,在我看来,在访问令牌中包含权限声明将是更好的意见。