登录后,Azure SSO示例代码重定向到错误的位置

问题描述

我正在尝试Microsoft身份平台的示例代码,以向Web应用程序添加身份验证和授权。 链接(https://github.com/Azure-Samples/ms-identity-aspnet-webapp-openidconnect)中的示例在IIS Express中运行良好。 在IIS中的自定义网站上托管相同的应用程序时,它无法按预期工作。下面介绍了我所遵循的步骤以及出现的问题。

在IIS Express中托管

  1. 以下是此应用程序的登录页面。

    img1

  2. 在IIS Express中,单击“用Microsoft登录”时,会提示输入用户名和密码。

    img2&3

  3. 输入凭据后,它将成功重定向到Web.config文件中配置的索引页。

    img4

自定义IIS网站中的住宿

  1. 同一应用程序位于IIS的自定义网站中。

    img5

  2. 在单击“使用Microsoft登录”时,还会提示您输入用户名和密码

  3. 输入用户名和密码后,它不会重定向到配置的页面(https:// localhost / AppTest /),而是登陆到URL https:// localhost /。

  4. 此外,浏览器的网络日志还显示,重定向uri请求的响应标头中的位置标头的值为“ /”。

img6

  1. 为进行调试,我添加了一个自定义的中间件。

    img7

  2. 它在UseOpenIdConnectAuthentication之前使用,如下所述。

    img8

  3. 在使用Visual Studio进行调试时,观察到在进行身份验证之后,UseOpenIdConnectAuthentication发出了一个新的未知重定向请求,而不是Web.config中配置的重定向uri,并且该请求及其响应的位置路径值为“ /”。

img9

当同一应用在IIS Express中运行良好时,我无法理解这个新的重定向请求是如何产生的。请帮助我解决此问题。谢谢。

解决方法

发现,在将应用程序托管在IIS中时,经过身份验证后,而不是登陆到 UseOpenIdConnectAuthentication 中配置的URL中,而是对指向 AuthenticationProperties 。

在SignIn操作中修改此重定向值解决了该问题。

,

对于您的错误,我认为最可能的原因是未启用目录浏览,因此该程序被引导至未知的重定向uri。

因此,您可以将此代码段粘贴到web.config文件中以解决该错误。

<system.webServer>
    <directoryBrowse enabled="true" />
</system.webServer>

或者您可以

1.Open IIS Manager

2.Click the Application

3.Click Directory Browsing

4.Click Open Feature (On the right you will see under Actions)

5.Click Enable

有关更多信息,请参阅this。您可以关注this

更新

这是我对您提供的示例代码和一些配置进行更改的地方。

enter image description here

enter image description here

enter image description here

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...