使用 Azure ACS 访问底层身份提供者的 access/refresh 令牌
Using Azure ACS to get access to underlying identity provider's access/refresh token
我找不到任何关于 ACS 是否提供此功能的明确指示。
我想利用 ACS 完成我的大部分身份验证工作,但我还想访问发送到 ACS 的身份提供者的 access/refresh 令牌。然后我可以 API 调用身份提供者来访问用户的数据,例如日历或个人资料信息(假设我在应用程序授权步骤中请求了此访问)。
这可以使用 ACS 吗?似乎 ACS 抽象出大部分底层身份提供者信息,并且仅提供纯粹用于身份验证目的的 ACS 令牌,而不是用于直接与身份提供者对话。
是也不是:)
ACS 确实为支持该功能的提供商支持该功能。它没有明确记录,因为它并不特殊。 ACS 不 "just create own token for pure authentication purposes"。
如果您使用 FaceBook IdP,ACS 会为您提供 FaceBook 令牌,您可以使用它来查询 FaceBook Graph API。您将获得 API 的哪些权限取决于您的 FaceBook 应用程序需要对用户进行身份验证的哪些权限。我不确定 FaceBook 同意框架的复杂程度,但最后我认为,身份验证用户只能接受所有必需的同意,或拒绝所有。他无法从所有请求中有选择地选择对您的申请授予哪些同意。
话虽如此,您不会从 Google 身份验证提供商那里收到额外的令牌。至少在旧的 OpenID 2.0 实现中。现在,随着 OpenID 2.0 的弃用和将 Google 移动到 OpenID Connect,需要您将 ACS 命名空间显式注册为 Google 的应用程序。在这一点上,我假设(我的推测)您可以声明请求的同意,就像您对 FaceBook 所做的那样。如果 Google 发送令牌,您肯定会通过 ACS 在您的应用程序中收到它。
ACS 是超级强大的服务,不会消亡。正如在引用的博客 post 中,其所有功能迟早会移至 Azure AD 本身。并将提供迁移计划(希望 :))。
但还要注意,ACS 只与 Yahoo、Google、Facebook、Azure AD 和任何 WS-Federation IdP 对话。并且 WS-Federation 协议并不以非常灵活和为您提供所需的灵活性而著称。 ACS理论上也是supports OAuth 2.0,但它的支持不包括Federation,只支持本地身份管理(身份本地到ACS自身)。
另请注意,许多 Microsoft 拥有的服务都在使用 ACS,例如 Visual Studio Online、Azure Service Bus 等。 ACS 既没有死,也不会死,让它的所有客户都在野外。
您可以决定今天使用它。或者,您可以决定使用 Azure AD 本身目前提供的任何功能。或者等到 ACS 完全迁移到 Azure AD。
我找不到任何关于 ACS 是否提供此功能的明确指示。
我想利用 ACS 完成我的大部分身份验证工作,但我还想访问发送到 ACS 的身份提供者的 access/refresh 令牌。然后我可以 API 调用身份提供者来访问用户的数据,例如日历或个人资料信息(假设我在应用程序授权步骤中请求了此访问)。
这可以使用 ACS 吗?似乎 ACS 抽象出大部分底层身份提供者信息,并且仅提供纯粹用于身份验证目的的 ACS 令牌,而不是用于直接与身份提供者对话。
是也不是:)
ACS 确实为支持该功能的提供商支持该功能。它没有明确记录,因为它并不特殊。 ACS 不 "just create own token for pure authentication purposes"。
如果您使用 FaceBook IdP,ACS 会为您提供 FaceBook 令牌,您可以使用它来查询 FaceBook Graph API。您将获得 API 的哪些权限取决于您的 FaceBook 应用程序需要对用户进行身份验证的哪些权限。我不确定 FaceBook 同意框架的复杂程度,但最后我认为,身份验证用户只能接受所有必需的同意,或拒绝所有。他无法从所有请求中有选择地选择对您的申请授予哪些同意。
话虽如此,您不会从 Google 身份验证提供商那里收到额外的令牌。至少在旧的 OpenID 2.0 实现中。现在,随着 OpenID 2.0 的弃用和将 Google 移动到 OpenID Connect,需要您将 ACS 命名空间显式注册为 Google 的应用程序。在这一点上,我假设(我的推测)您可以声明请求的同意,就像您对 FaceBook 所做的那样。如果 Google 发送令牌,您肯定会通过 ACS 在您的应用程序中收到它。
ACS 是超级强大的服务,不会消亡。正如在引用的博客 post 中,其所有功能迟早会移至 Azure AD 本身。并将提供迁移计划(希望 :))。
但还要注意,ACS 只与 Yahoo、Google、Facebook、Azure AD 和任何 WS-Federation IdP 对话。并且 WS-Federation 协议并不以非常灵活和为您提供所需的灵活性而著称。 ACS理论上也是supports OAuth 2.0,但它的支持不包括Federation,只支持本地身份管理(身份本地到ACS自身)。
另请注意,许多 Microsoft 拥有的服务都在使用 ACS,例如 Visual Studio Online、Azure Service Bus 等。 ACS 既没有死,也不会死,让它的所有客户都在野外。
您可以决定今天使用它。或者,您可以决定使用 Azure AD 本身目前提供的任何功能。或者等到 ACS 完全迁移到 Azure AD。