Azure AD答复URL在HTML处理程序上失败

时间:2019-03-15 10:24:49

标签: asp.net azure azure-active-directory

通过ASP.NET,我创建了一个启动文件,该文件将使用Azure AD登录用户。 例如

 public void Configuration(IAppBuilder app)
 {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
        app.UseCookieAuthentication(new CookieAuthenticationOptions());

        app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions()
        {
            ClientId = "42067b8d-b972-44e9-af86-ef60bc6d6fdb",
            Authority = "https://login.windows.net/...com",
            RedirectUri = "http://localhost:50560/content/story_html5.html",
            PostLogoutRedirectUri = "http://localhost:50560/content/story_html5.html",
            Scope = OpenIdConnectScope.OpenIdProfile,
            ResponseType = OpenIdConnectResponseType.IdToken
        });
  }

正如您看到我的RedirectUri击中静态文件html文件一样。

在Azure门户中我的应用程序注册中,replyUrls状态的清单

"replyUrls": [
"http://localhost:50560/content/story_html5.html"
],

所以一切正常,并正确连接。

(例如,如果我使用aspx,重定向将起作用)

但是使用.html文件时出现错误

  

HTTP错误405.0-不允许使用方法

     

由于无效,无法显示您要查找的页面   方法(HTTP动词)被使用。

我认为我需要做的就是将html处理程序添加到Azure AD,有人知道如何做到这一点吗?

谢谢

1 个答案:

答案 0 :(得分:1)

这与Azure AD无关,但与您的配置无关。你的结局。您的项目。您的IIS配置。由于安全原因,登录响应是 HTTP POST 。出于显而易见的原因,IIS中的静态文件处理程序不接受GET之外的任何内容。

更多信息,您将找到herethere

首先,为什么要重定向到静态页面?通过OIDC登录后的重定向,IdP(身份提供程序,在这种情况下理解Azure AD)将发送OIDC中间件(了解.UseOpenIdConnectAuthentication方法)所需的有价值的信息,以便能够验证令牌和初始化用户会话。通过将登录响应发送回静态页面,您可以完成几件事:

  • 您从身份验证中删除了OIDC中间件-它不再能够处理响应。因为它不会侦听静态文件请求。静态文件在OWIN身份验证中间件之外进行处理。
  • 因此无法验证用户的真实性。
  • 因此无法创建安全的cookie。
  • 因此无法将用户登录到您的应用程序。

结论

请勿更改ASP.NET中间件的回复URL,除非您明确并有意地希望覆盖登录响应的完整处理。