【问题标题】:Authentication for web api using azure AD使用 azure AD 对 Web api 进行身份验证
【发布时间】:2017-04-08 21:29:11
【问题描述】:

我需要使用 azure 活动目录为 azure web api 实现身份验证。

客户端应用程序(使用 webapi)可能是也可能不是天蓝色的。我需要如何对用户进行身份验证,如果我的应用程序不在天蓝色(如果它是 IOS 应用程序),我应该在哪里生成令牌。身份验证应该在所有情况下都有效,即使客户端应用程序是否在 azure 中。

现在请告诉我实现身份验证的最佳程序。

【问题讨论】:

    标签: azure azure-active-directory azure-api-apps


    【解决方案1】:

    如果是移动应用,您需要将 Azure AD 中的客户端应用定义为本机应用。然后您在那里定义 API,并添加您的客户端访问权限。你可以选择通过 Azure AD 中的 API 应用清单自定义可用权限。然后,当您的移动应用程序打开时,您必须使用 Azure AD 进行身份验证,然后请求 API 的访问令牌。然后您可以使用它来验证请求。

    我不能太详细地回答这个问题,因为这是一个相当大的话题,而且如何完成也取决于您的平台。有一个sample app,您可以检查哪个完全符合您的要求。可以在 here 找到原生应用程序的完整示例列表。

    【讨论】:

    • 这就是我所做的,但我面临一个小问题,我的客户端能够获取令牌,但是当我将它传递给 API 时,它返回未经授权。我无法弄清楚有什么问题。我的客户端是一个简单的桌面控制台应用程序。
    • 可能意味着您的 API 不认为令牌有效。对您的设置一无所知,我只能提到您应该检查预期的audience 和authority 是否正确。也许用 API 中的一些代码发布一个关于这个的问题?
    • 据我了解,Web API 的受众应该用作客户端中的资源,并且我能够获取该资源的令牌。
    • 您可以检查令牌,例如jwt.io。检查 aud 声明值是否与您在 API 中配置的值匹配。然后真的就这个问题提出一个问题:)
    • 我按照此处的说明 (docs.microsoft.com/en-us/azure/active-directory/develop/…) 进行操作,并且在本地运行 WEB API 时能够成功对其进行身份验证。但是,当我将相同的东西部署到 Azure(免费帐户)时,我从 WEB API 获得了未经授权。客户端唯一变化的是请求URI,WEB API代码没有变化。
    【解决方案2】:

    应用服务使用不同的身份验证提供程序Azure Active Directory,Facebook,Google,Microsoft,Twitter。 我们可以在Azure Portal 中设置任何类型的身份验证/授权。有关如何在 Azure 应用服务中对 API 应用使用身份验证的更多信息,请参阅document。

    默认情况下,应用服务提供身份验证,但不限制对您的网站内容和 API 的授权访问。您必须在您的应用代码中授权用户。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-14
      相关资源
      最近更新 更多