使用Azure ACS访问底层身份提供程序的访问/刷新令牌

时间:2015-03-12 21:53:30

标签: azure oauth acs

我无法找到ACS是否提供此功能的明确指示。

我想利用ACS来完成我的大部分身份验证工作,但我还想访问发送给ACS的身份提供商的访问/刷新令牌。然后,我可以对身份提供者进行API调用,以访问用户的数据,例如日历或配置文件信息(假设我在应用程序授权步骤中请求了此访问权限)。

这可能使用ACS吗?似乎ACS将大部分基础身份提供者信息抽象出来,并且仅提供纯粹用于身份验证目的的ACS令牌,而不是用于直接与身份提供者交谈。

1 个答案:

答案 0 :(得分:1)

是和否:)

ACS确实为支持该功能的提供商提供此功能。它没有明确记录,因为它并不特别。 ACS确实“仅为纯粹的身份验证目的创建自己的令牌”。

如果您使用FaceBook IdP,ACS会为您提供FaceBook令牌,您可以使用它来查询FaceBook Graph API。您将获得的API权限取决于您的FaceBook应用程序对身份验证用户所需的权限。我不确定FaceBook同意框架的复杂程度,但最后我格子化它,验证用户只能接受所有必需的同意,或拒绝所有。在所有要求中,他无法有选择地选择授予您的申请的同意书。

话虽如此,从Google身份验证提供商处,您不会收到额外的令牌。至少使用旧的OpenID 2.0 imeplementation。现在,随着OpenID 2.0的部署以及将Google迁移到OpenID Connect,您需要明确将ACS名称空间注册为Google的应用程序。在那一点上,我假设(我的猜测)你可以声明所请求的同意,就像你使用FaceBook一样。如果Google发送令牌,您肯定会通过ACS在您的应用程序中收到该令牌。

ACS是超级强大的服务,不会死。与引用的博客文章一样,其所有功能迟早都会移至Azure AD本身。并且将提供迁移计划(希望:))。

但是,请注意,ACS只会与雅虎,谷歌,Facebook,Azure AD和任何WS-Federation IdP进行对话。并且WS-Federation协议不是非常灵活,并且为您提供所需的灵活性。 ACS在理论上也supports OAuth 2.0,但它的支持不包括联邦,只包括本地身份管理(ACS自身的本地身份)。

另外,请注意,许多Microsoft拥有的服务正在使用ACS,例如Visual Studio Online,Azure Service Bus和其他服务。 ACS既没有死,也不会让所有的客户都疯狂。

您今天可以决定使用它。或者,您可以决定使用Azure AD本身可用的任何功能。或者等到ACS完全迁移到Azure AD。