我的OAuth2客户端可以从访问令牌中检索规范用户ID吗?

时间:2013-09-03 11:53:08

标签: oauth-2.0 dotnetopenauth

使用OAUth2 Web服务器流程,我已经:

  1. 用户尝试访问www.third-party.com/welcome
  2. 用户被重定向到www.myserver.com/oauth2/authorize
  3. MyServer对用户进行身份验证,并将其重定向到www.third-party.com/welcome?code = ...
  4. third-party.com在幕后与myserver.com交谈,与{02}进行交流以获取OAuth2访问和刷新令牌。
  5. 一切都好。现在,third-party.com需要确定用户的规范用户名,因此它可以对www.myserver.com/api/ {username} / details

    等资源进行ReSTFUL URI调用。

    我在ASP.NET MVC上使用DotNetOpenAuth。我的OAuth2控制器如下所示:

    namespace OurOAuth2.Server.Controllers {     [授权]     公共类OAuth2Controller:Controller {         private readonly AuthorizationServer authServer;         private readonly IOAuth2ClientAuthorizationStore authStore;

    code

    我可以看到三种方法:

    1. www.myserver.com上的(非ReSTful)URI端点,它将返回授权供应商承载令牌的用户详细信息 - 因此第三方应用只需使用OAuth2承载令牌点击/ userinfo并获取返回用户的详细信息,包括用户名。

    2. 从访问令牌中检索用户身份 - 但我的理解是,这需要解密密钥,应该是客户端应用程序的一部分(?)

      < / LI>
    3. 在第三方应用和oauth2授权服务器之间的令牌交换中包含一些其他用户状态数据。

    4. 我猜(2)是一个坏主意。 (1)很容易实现,但我很想知道方法(3)是否可行以及我将如何实现它。

1 个答案:

答案 0 :(得分:0)

最常见的模式是交换访问令牌以获取与Facebook相同的用户详细信息:

“令牌”端点提供访问令牌

“Me”端点提供与请求作为授权头部携带的访问令牌(承载令牌)相关的用户详细信息(根据授予的范围)。