使用OpenIDConnect AAD身份验证从WebApp调用WebApi时的无限循环

时间:2017-01-26 22:30:30

标签: azure azure-web-sites azure-active-directory openid-connect adal

我正在尝试关注示例WebApp-WebApi-OIDC,但在调用WebApi时,它在身份验证期间陷入无限循环。以下MVC TodoListController中的代码导致了这种奇怪的行为:

if (Request.QueryString["reauth"] == "True") {
    HttpContext.GetOwinContext().Authentication.Challenge(
      new AuthenticationProperties(),
      OpenIdConnectAuthenticationDefaults.AuthenticationType);
}

我也尝试过SystemWebCookieManager解决方法,但它没有帮助。

是否存在已知错误或我未正确实施?

谢谢!

2 个答案:

答案 0 :(得分:0)

代码示例适用于我。当代码捕获AdalException时,执行上面提到的代码。

哪一行代码会导致此问题?您是否也在此post中提到的此代码示例中遇到了 TokenCache 问题?

请确保您可以成功获取TodoListController中的令牌。

答案 1 :(得分:0)

所以这些是我为任何感兴趣的人解决问题的步骤:

  • 我利用System.Web cookie而不是依赖于默认的Owin cookie实现。详细信息为RewriteRule
  • 确保您没有引用有缺陷的ADAL.net nuget包。而是参考此here中提到的版本。
  • 为与您的网络应用程序相关联的AAD应用程序配置适当的权限。这是我配置的两个:
    • 将TodoListService作为委派权限访问。
    • 将Windows Azure Active Directory的目录数据作为应用程序权限读取。
  • 确保网站的AppId todo:TodoListResourceid appsettings键的配置文件与您在与todoList webapi服务相关联的AAD应用程序中配置的内容匹配。并且应该与您在VS WebApis项目ida:Audience appSetting中指定的相同。 我使用的格式是
https://{tenant}/{appName}