一起使用access_tokens和id_tokens Auth0

时间:2018-11-12 19:34:21

标签: oauth-2.0 jwt access-token auth0

在开始集成auth0时,我遇到了this article 因此,很明显,为了保护api,我们需要的只是access_token,它随请求Authorization标头(承载方案)中的每个http请求一起发送。

但是,然后auth0(以及可能的其他提供程序)也发送一个包含有关用户信息的Id_token。我的困惑是如何使用此id_token将用户信息传递给我的api。 (我有一个运行在前端的SPA,它通过auth0进行身份验证并获得这2个令牌)。

我可以在我的api中调用userInfo端点来获取用户信息。但是这会不会击败purpose of the Id tokens

  

该ID令牌已由应用程序使用,并且包含声明,   通常用于UI显示。它已添加到OIDC   规范作为优化,因此应用程序可以知道   用户的身份,而无需建立其他网络   请求。

所以我的问题是如何使用ID令牌访问我的api中的用户个人资料?

2 个答案:

答案 0 :(得分:0)

“我的困惑是如何使用此id_token将用户信息传递给我的api” 为此,您只需传递JWT令牌即可。在生成JWT令牌时,您需要在JWT令牌的有效负载部分中添加用户信息。当您的api获取JWT令牌时,只需使用私钥检查您的JWT令牌是否正确,如果正确,就可以获取数据。如何获得就是从那个JWT Authentication for Asp.Net Web Api

答案 1 :(得分:0)

ID令牌作为OIDC协议的一部分从授权服务器发送。这样做的目的是验证用户到您的客户端应用程序(在这种情况下为SPA)的身份。即让您的API或应用程序知道哪个特定用户授权客户端代表其访问特定资源。

使用ID令牌的最佳方法是使用库进行解码和验证。这将允许您验证令牌的签名以及令牌中包含的任何其他声明(您可以将自定义声明添加到令牌)。这些声明的验证可用于确定用户身份并与您API中的用户个人资料匹配。您将必须查看与IdP(auth0)有关的文档,以了解如何添加API中用户配置文件使用的新声明。