使用 Azure ACS 获取对基础标识提供者的访问/刷新令牌的访问权限



我找不到任何明确的迹象表明ACS是否提供了此功能。

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

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

是和否:)

ACS 确实为支持此功能的提供程序支持此功能。它没有明确记录,因为它并不特殊。ACS 不会"仅为纯粹的身份验证目的创建自己的令牌"。

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

话虽如此,从Google身份验证提供商,您不会收到其他令牌。至少在旧的OpenID 2.0实现中是这样。现在,随着OpenID 2.0的衰落并将Google迁移到OpenID Connect,您需要将ACS命名空间显式注册为Google的应用程序。在这一点上,我假设(我的猜测)你可以声明请求的同意,就像你对FaceBook所做的那样。如果谷歌发送令牌,您肯定会通过ACS在您的应用程序中收到它。

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

但是,请注意,ACS只与Yahoo,Google,Facebook,Azure AD和任何WS-Federation IdP通信。WS 联合身份验证协议并不以非常灵活和为您提供所需的灵活性而闻名。ACS 理论上也支持 OAuth 2.0,但其支持不包括联合身份验证,仅包括本地身份管理(ACS 自身本地身份)。

另外,请注意,ACS被许多Microsoft拥有的服务使用,如Visual Studio Online,Azure Service Bus等。ACS既不会死,也不会只是让所有客户在野外消亡。

您可以决定立即使用它。或者,你可以决定使用 Azure AD 本身目前提供的任何功能。或者等到 ACS 完全迁移到 Azure AD。

最新更新