OpenID Connect:使用id_token作为access_token是否可以?

Gur*_*uru 1 oauth-2.0 openid-connect

在我工作的一个应用程序中,我们正在考虑将id_token用于所有用例,包括身份验证和授权.该解决方案正在从头开始.目前没有任何资源的消费者,我们可以修改资源以使用id_token.我对openid_connect和oauth 2.0的概念有点新意.是否只有使用id_token具有所有访问细节的问题?

Ján*_*aša 5

如果您的应用程序只需要对用户进行身份验证,然后让他们使用他们可以访问的所有功能访问其后端,则只需使用ID令牌并根据用户名或角色检查访问权限就更容易了.仅使用ID令牌时,您还可以接受来自不同OAuth2提供商的ID令牌.

访问令牌对于部分访问委派很有用 - 当用户将他们的一些权限委托给另一个应用程序时.例如,如果我创建的应用程序要求其用户对其GMail进行只读访问,则应用程序可以获得访问权限,而不允许其访问该用户的任何其他Google资源.

如果您想为简单的客户端应用程序及其后端使用访问令牌,您的客户端应用程序将要求它可能使用的所有OAuth2范围,然后查看从OAuth2服务器获取的访问令牌中返回的范围.

因此,如果您只想为其前端创建后端API并且不打算为其他应用程序打开它,那么使用ID令牌会更容易.如果您发现需要访问令牌,可以稍后再开始使用它们.

您还可以考虑根据提供的ID令牌发布您自己的令牌(JWT)以及您需要的所有身份验证和授权信息,这样您的后端就不必获取每个API访问的用户安全数据.