使用OAuth或证书进行Azure承载身份验证?

时间:2016-11-07 17:27:09

标签: azure oauth active-directory oauth-2.0

我是Azure的新手,所以如果我的术语有点偏,我很抱歉。我继承了一个Web服务,该服务使用Azure上的OAuth 2对用户进行身份验证。我被要求创建一个应用程序,它也使用this等证书来访问服务。

我已经实施了上述解决方案,效果很好。但是,我不得不将服务的受众从GUID更改为URL,例如:

Was: <add key="ida:Audience" value="709a****-****-****-****-*************" />
Now: <add key="ida:Audience" value="https://***.onmicrosoft.com/cafc****-****-****-****-*************" />

这意味着用户无法再使用OAuth登录。是否可以在两种方案中使用相同的受众群体,或指定两个受众群体?

谢谢,

2 个答案:

答案 0 :(得分:1)

您必须将应用程序拆分为Azure Active Directory中的两个已注册的应用程序。您可以在documentation中查看身份验证方案。有以下情况:

  • Web浏览器到Web应用程序
  • 单页面应用
  • Web API的原生应用程序
  • Web API的Web应用程序
  • Web API的守护程序或服务器应用程序

以下是显示每个身份验证方案的交互点的图表: enter image description here

正如您所看到的,每个方案都有一种特定的方法来验证对它的请求。对于您的场景,您需要一个Web API来请求您需要的信息,然后是用户与之交互的浏览器应用程序,然后是一个可以与同一API交互的守护程序。

答案 1 :(得分:1)

  

是否可以在两种方案中使用相同的受众群体,或指定两个受众群体?

是的,有可能。受Azure AD保护的Web服务不关心您如何获取令牌。在这种情况下,您希望使用 OAuth 2.0代码授予流程客户端凭据流程来获取令牌。它将根据配置验证令牌,例如受众租户等。

根据说明,您更改了网络服务中的受众群体。要使网络服务继续支持使用 OAuth 2.0代码授予流程获取的令牌,您还需要使用新的受众群体资源 >(似乎您在旧请求中使用guid获取了令牌)。