Ciao
我正在与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)。
我会知道实现目标的最佳实践是什么。我找到了两个选择:
最佳做法是什么?欢迎任何建议
谢谢
答案 0 :(得分:2)
我认为,您不应将ID令牌发送到资源。 ID令牌仅适用于客户端应用程序。客户端解析令牌的内容并使用用户的信息。访问令牌的目的是通知API令牌的持有者已被授权访问API并根据令牌中的范围声明执行预定的一组操作。
另一点是根据OpenID Connect规范,ID令牌的受众(由aud
声明表示)必须是发出身份验证请求的应用程序的客户端ID。如果不是这种情况,则不应信任令牌。相反,API期望具有aud
值的令牌等于API的唯一标识符。因此,我认为,将访问权限令牌包括在访问令牌中会是一个更好的意见。