相关疑难解决方法(0)

如何在Azure Web Apps中将redirect_uri协议设置为HTTPS

我面临以下问题.我有一个ASP Net Core 2 Web应用程序,我想部署到Azure.应用程序身份验证与Azure Active Directory集成,因此当我尝试登录时,会发生以下请求:

GET https://login.microsoftonline.com/ecf3f643-27e5-4aa7-9d56-fd350e1e9c37/oauth2/authorize?client_id=20a2bcb5-0433-4bb4-bba3-d7dc4c533e85&redirect_uri=http://myapplication.mydomain.com/account/signin [...]  200 OK
POST http://myapplication.mydomain.com/account/signin 301 Redirect --> https://myapplication.mydomain.com/account/signin
GET https://myapplication.mydomain.com/account/signin 500 Internal Server Error
Run Code Online (Sandbox Code Playgroud)

第一个GET是正常的Azure Active Directory登录请求.注意redirect_uri参数有协议http.

第二个请求是重定向到redirect_uri带有一些参数的POST.由于我已将Azure配置为仅允许HTTPS流量,因此IIS使用HTTPS重定向到相同的URL.这是第三个要求.请注意,第三个请求是GET请求,因为HTTP重定向始终是GET请求,POST请求的所有参数都会丢失,并且身份验证失败会在后端发出HTTP 500错误.

我试图手动将redirect_uri参数中的协议手动更改为HTTPS,并且按预期工作.因此,我唯一需要的是让ASP Net Core意识到协议是HTTPS.

怎么办?我在互联网上搜索了大量的页面而没有明确的答案.

注意:redirect_uri由Kestrel设置.由于Azure App Service将IIS放在我的Kestrel前面并在那里进行SSL终止,因此Kestrel和我的应用程序不知道协议是HTTPS,因此在重定向uri中使用HTTP.

更新1

按照@Bruce的建议,我在这里尝试了这个例子,克隆了存储库,并按照那里的说明配置了应用程序和AD,我能够重现错误.

重定向URI继续与http协议一起使用.如果我只在AD应用程序配置中添加https端点作为回复URL,则会收到错误The reply address 'http://testloginad.azurewebsites.net/signin-oidc' does not match the reply addresses configured for the application.如果我将http协议端点添加为回复URL,则会收到如下所示的HTTP …

oauth-2.0 azure-web-sites azure-active-directory asp.net-core

11
推荐指数
3
解决办法
2383
查看次数