在OpenID Connect中,是否可以将id令牌而不是访问令牌传递给资源服务器进行授权?

问题描述 投票:2回答:1

我正在考虑使用id令牌代替id令牌进行授权,以便资源服务器可以验证其签名并从中提取用户ID。我不知道这个方法有什么缺点吗?

如果我扔掉访问令牌,我想我不能使用验证端点。对我们而言,由于客户端应用程序和OIDC的身份提供者都归我们所有,因此用户授予访问权限的范围无关紧要。

我正在使用此库来实现OAuth2和OpenID服务器。 https://github.com/bshaffer/oauth2-server-php

oauth oauth-2.0 openid-connect
1个回答
3
投票

ID令牌的使用适用于客户端应用程序。客户端使用它来验证最终用户。所有这一切都可以通过索赔ID令牌转移实现。并且这些声明内置于JWT中。简单来说,ID Token是一个自包含的令牌。

现在,如果您控制所有打算参与的各方,在客户端之外共享ID令牌是可以的。考虑通过ID令牌泄漏敏感用户信息的情况。例如,如果ID令牌包含有关性别的声明,仅供客户使用。但是当您与第三方共享ID令牌时,您会暴露这些敏感信息。如果存在法律障碍,可能会构成犯罪。

另一点是ID令牌验证。因此,ID Token以客户端为目标,相应地设置了aud等重要声明。将ID令牌传递给后端以供使用时,此类验证可能会失败。

有两种解决方案。首先是使用自包含的访问令牌。现在,通常使用基于JWT的访问令牌。有了它们,您将获得相同的解决方案。它将包含最终用户身份,范围值以及令牌验证信息。 Azure AD使用这种方法 - check this link

第二个是使用ID令牌。鉴于你控制前端和后端,我的意见是你可以使用它。但要注意未来的扩展。特别不要将其暴露给其他方。

© www.soinside.com 2019 - 2024. All rights reserved.