OAuth:如何在访问令牌后获取经过身份验证的用户信息?

时间:2016-12-15 19:40:28

标签: android oauth oauth-2.0

  1. 用户访问Application Client
  2. Application Client将用户重定向到Authorization Server(通过用户代理/浏览器)
  3. 用户输入您的凭据(用户名/密码)
  4. 授权服务器确认凭据,并将AuthorizationCode(在授权代码授权的情况下)或访问令牌(在隐式授权的情况下)发送到重定向URI(在我的情况下,指向我的应用程序的自定义Android架构)。 ...
  5. (其他涉及令牌交换的步骤或访问令牌使用步骤省略)

    如何以及何时应用程序客户端获取有关提供其凭据的用户的任何信息(如用户ID或名称)?

    我正在为我的授权服务器使用OAuth API安全项目(https://github.com/OAuth-Apis/apis),以及由Swagger代码生成的资源服务器/ API。

    令牌请求和响应一切正常,授权服务器正在保存访问密钥,其中包含有关Authenticated Principals的信息。还有一个端点用于检索有关principal:/ tokenInfo的此信息,但此端点用于资源服务器(需要资源服务器凭据)。

    所以我的问题只是关于Application Client获取用户信息.... 我可以在我的api中创建一个端点,只是为了获取有关用户/主体的信息,基于访问令牌和/ tokenInfo端点引用,并返回到Application Client,但它很奇怪....我认为有一个标准...

    有人能帮忙吗?

1 个答案:

答案 0 :(得分:2)

如果资源服务器未公开任何返回用户信息的API,则客户端应用程序无法获取用户信息。如果存在这样的API,则客户端应用程序可以通过使用访问令牌访问API来获取用户信息。

如果授权服务器支持 OpenID Connect ,则有两种标准方法可以获取用户信息。一种是请求授权服务器发出包含用户信息的 ID token 。另一种方法是访问 UserInfo Endpoint 。有关详细信息,请参阅 OpenID Connect Core 1.0