微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 OAuth2.0 和 AAD 登录的 Azure API 管理导致重复循环

如何解决使用 OAuth2.0 和 AAD 登录的 Azure API 管理导致重复循环

我们有一个简单的 Web 应用程序,我正在尝试在它之上使用 Azure API 管理。现在,我正在将我们的 Web 应用程序产品的 CName 重定向到 apim url。

我们的 Web 应用程序是第一方应用程序,它从 Microsoft.Identity.Web nuget 包执行 AAD 身份验证并获取 access_token,如下所示:

string accesstoken = tokenAcquisition.GetAccesstokenForUserAsync(new[] { Configuration["Scopes:<product>"] }).GetAwaiter().GetResult();

现在,我正在将所有流量(GET /* 和 POST /*)从 CName 重定向到 apim url

如果不使用 APIM,我们的网络调用(成功)如下所示: Without APIM

但是,在添加 APIM 层后,我们的网络调用如下所示: With APIM

/signin-oidc 请求以某种方式将调用重定向login.microsoftonline.com/..,而不是授权请求并重定向调用页面的根目录(路径:'/')。

我们得到重复循环:

apim-url => login.microsoftonline.com/consumers/.. => login.live.com/... => apim-url/signin-oidc =>  login.microsoftonline.com/consumers => ...

我不确定重定向是否无法正常工作,或者身份验证是否无效。

任何线索都会有所帮助,

谢谢,

玛尼莎

解决方法

我不知道您为什么会出现这种行为,但是,身份验证循环通常来自错误的 redirectUrl。

您正在使用 dns 重定向,因此您应该将门户中的 2 Redirect Url 添加到 AAD:

apim-url/signin-oidc 和 [yourdomain]/signin-oidc

,

我只是从头开始尝试:

  • 创建 azure api 管理服务

  • 添加网关 - 让我们称之为“我的网关”

  • 添加一个 Api(我选择了一个带有 AAD 身份验证的 Azure 函数)让它称之为“my-api”

  • 在 API 的设置(API => my-api => 设置)中,我删除了订阅请求(仅用于测试),并检查无用户授权(因为这是我的功能负责在我的测试中,不是网关)

现在我在我的 Http 客户端(对我来说是高级 REST 客户端)中测试以调用网关:

https://my-gateway.azure-api.net/my-api

在标题中我添加:授权:承载 [xxxx - 安全令牌]

如果所有 AAD 配置都没有问题,它就可以正常工作(对我有用)

如果不是,则您的 pb 在您的 api 的 AAD 配置中(或在您的 API 代码中的 AuthO/OpenId 的某些错误实现中)

如果可能,请与我们分享您的 API 中安全部分的一些代码。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。