首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >AzureAD中间件因HTTP/HTTPS redirectUri问题中断

AzureAD中间件因HTTP/HTTPS redirectUri问题中断
EN

Stack Overflow用户
提问于 2020-12-06 22:46:07
回答 1查看 346关注 0票数 2

我试图在运行ASP.NET Core3.1的Blazor服务器端应用程序上设置ASP.NET。它的配置反映了Blazor模板显示的应用程序,因此没有什么特别之处。下面是Startup.cs文件中的相关部分--请注意,这里没有更多的内容。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
  .AddAzureAD(opt => {
    opt.Domain = "example.com";
    opt.TenantId = "tenantId";
    opt.Instance = "https://login.microsoftonline.com/";
    opt.ClientId = "clientId";
    opt.CallbackPath = "/signin-oidc";
  });

我正在使用Azure应用程序网关,我已经在那里安装了我的所有证书。因为它允许SSL展开,所以所有请求都应该访问App,然后打开,然后路由到运行web服务器的服务,无论它位于后端。证书管理是痛苦的,理想情况下,我希望在集群中完全在HTTP上下文中运行服务器,特别是因为该服务在其他方面无法从internet访问。

应用程序网关只将入站HTTPS请求指向服务。HTTP请求重定向到HTTPS侦听器。

这显然是ASP.NET核心中间件的一个问题。根据上面的配置,我只能设置路径。这证明是个问题。redirect_uri中的值指向http://example.com/signin-oidc。注意协议--我认为它使用的是http,因为中间件发现HTTP没有在机器上使用。

我被放到了微软登录页面,我登录,它点击重定向的App (因为redirect_uri指向http://),然后重定向到https )。App打开SSL,服务接收请求。我已经获得了显示错误的DevelopmentException页面,它表明在处理请求时出现了一个未处理的异常。不幸的是,它是模糊的:

异常: OpenIdConnectAuthenticationHandler: message.State为空或空。不明地点。异常:在处理远程登录时遇到错误。( Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.HandleRequestAsync() Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext上下文) Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext上下文)

现在,我阅读了关于这方面的一些类似的注释,有人建议我可以使用OpenId连接OnRedirectToIdentityProvider事件来拦截并设置RedirectUri值,以将其设置为我想要的任何东西。

更新Startup.cs时,我将设置以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
services.AddAuthentication(opt => {
    opt.DefaultScheme = AzureADDefaults.AuthenticationScheme;
    opt.DefaultChallengeScheme = "oidc";
  })
  .AddAzureAD(opt => {
    opt.Domain = "mydomain.net";
    opt.TenantId = "tenantId";
    opt.Instance = "https://login.microsoftonline.com/";
    opt.ClientId = "clientId";
    opt.CallbackPath = "/signin-oidc";
  })
  .AddOpenIdConnect("oidc", opt => {
    opt.ClientId = "clientId"; //If I don't set this, I get an error it's not set
    opt.Authority = $"https://login.microsoftonline.com/{tenantId}/v2.0/";
    opt.Events.OnRedirectToIdentityProvider = async c => {
      c.ProtocolMessage.RedirectUri = "https://{domain}/signin-oidc";
      await Task.FromResult(0);
    };
  });

理想情况下,这包括将redirect_uri值更改为使用"https“而不是"http”的最小数量。这跳过了重定向,但不幸的是产生了另一个例外:

异常:无法解除对message.State的保护。不明地点。异常:在处理远程登录时遇到错误。( Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.HandleRequestAsync() Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext上下文) Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext上下文)

在这个问题上,四处搜索并不能产生很多相关的想法。

如果我在dev中完全在本地运行,并且没有https组件(全部是HTTP),那么这是没有问题的。因此,这里的问题似乎是中间件生成http://,appears接收https:// (在可能的重定向之后),这似乎破坏了一切。理想情况下,设置RedirectUri属性可以修复此问题,但似乎会影响数据在传输过程中的保护方式。

有人能解释一下如何让这个场景工作吗?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2021-01-05 10:24:24

我也有类似的问题,我的解决办法是:

  1. 设置c.ProtocolMessage.RedirectUri,就像对httpS URL

所做的一样

  1. 将cookie更改为安全设置,使用

options.NonceCookie =新CookieBuilder { Name = OpenIdConnectDefaults.CookieNoncePrefix,HttpOnly = true,SameSite = SameSiteMode.None,SecurePolicy = CookieSecurePolicy.Always,IsEssential = true } options.CorrelationCookie = new CookieBuilder { SecurePolicy = CookieSecurePolicy.Always }

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65177175

复制
相关文章
WordPress插件——SM图床小工具插件
SM.MS图床外链小工具插件,是小文博客独自开发的图床插件,用于WordPress博客添加图床上传小工具以及评论框处添加上传图片按钮。
神无月
2018/05/11
5.2K4
WordPress插件——SM图床小工具插件
eclipse安装STS插件遇到的问题
第一次接触springboot,对于用惯了eclipse写代码的人来说,接受IDEA确实还要多花点时间去改变下,因为IDEA确实会节省下不必要的写代码时间。废话少说,直接上教程。
兮动人
2021/06/11
1.4K0
eclipse安装STS插件遇到的问题
关于python安装lxml插件的问题
  文章只是介绍自己安装时从安装不上到安装后报错,再到安装成功的心路历程,并不代表广大欧皇也会会出现同类型的问题,也不是总结和汇总各种出问题的原因.
py3study
2020/01/15
2.7K0
关于python安装lxml插件的问题
解决IDEA无法安装插件的问题
进入2018年以来,在IDEA插件中心中,安装插件经常安装失败,报连接超时的错误。如下:
小忽悠
2018/09/04
5.4K0
解决IDEA无法安装插件的问题
ubuntu 织梦DEDE安装 GD插件 OFF问题
安装Ubuntu 16.04安装织梦CMS开始发现所有目录没有权限,把源码的用户加入到php用户组下面,目录权限问题解决,接下来php-mysql显示为off,安装好php-mysql后,php-gd显示为off找了半天无解,最后在google下找到解决方案,但是与我碰到问题不一样,最后修改代码成功运行将off显示为on
笨兔儿
2019/05/26
1.9K0
【问题解决】Eclipse安装Aptana插件-(注意对应版本问题)
昨天,我同学用Eclipse安装Aptana插件,她弄了一天都没安装起,最后找了我。 然后我也按照她的那个方法安装,结果一样,安装不成功!
谙忆
2021/01/21
4410
【问题解决】Eclipse安装Aptana插件-(注意对应版本问题)
WordPress小工具导入导出插件:Widget Importer & Exporter
如果想将一个已设置好的网站小工具,导入到另一个网站中,这个小工具导入导出插件会派上用场。
星哥玩云
2022/06/11
4980
解决安装WordPress主题及插件需要输入FTP问题
安装一个WordPress好像挺简单,但是默认主题不喜欢,想更换一个,无奈本地可以更换,但是服务器更换的时候需要设置FTP 。OK,设置呗,好像我的用户名密码之类的都是正确的,就是不让我通过,因此,找了一下解决方案
hedeqiang
2019/12/17
3K0
解决IDEA插件安装慢、超时、不成功问题[通俗易懂]
Windows 系统 Hosts 文件路径:C:\Windows\System32\drivers\etc\hosts
全栈程序员站长
2022/08/26
11.1K0
解决IDEA插件安装慢、超时、不成功问题[通俗易懂]
小工具:ubuntu 下安装截图工具
tags: linux 截图 ubuntu 安装 sudo apt install flameshot 配置快捷键 设置-设备-键盘: 添加自定义快捷键: 命令: flameshot gui
超级大猪
2020/07/16
8030
小工具:ubuntu 下安装截图工具
idea插件安装和推荐插件
自定义背景图片, 你懂的, 操作方法: 安装完插件重启之后, 工具栏view找到set Background Image, 然后把本地图片路径放进去
全栈程序员站长
2022/09/01
1.5K0
Xcode安装插件
To install, open up your terminal and paste this: curl -fsSL https://raw.github.com/alcatraz/Alcatraz/master/Scripts/install.sh | sh or download the repository from Github and build it in Xcode. You'll need to restart Xcode after the installation. Alcatra
rectinajh
2018/05/17
1.8K1
studio安装插件
Android Studio安装插件的方式其实和Eclipse大同小异。废话不多说,直接上图: 区域1:你当前已经安装了的插件 区域2:在线安装 区域3:从硬盘安装,即针对你已经下载好了的插件,
xiangzhihong
2018/01/30
7260
studio安装插件
svn插件安装
以下是一些关键步骤: 其中http://subclipse.tigris.org/update_1.0.x是SVN插件的下载站点【subclipse是Eclipse的SVN插件】。 以update_1
xiangzhihong
2018/01/26
1.2K0
Obsidian 插件安装
一、官方商店安装 在设置中找到第三方插件,点击社区插件市场中的浏览即可。 二、侧载安装 0. 插件下载 插件下载有多种途径,自己最常用的途径就是下面的这个网站: Johnny学OB • OB (pory.app) 1. 关闭安全模式 2. 安装插件 ① 新建 plugins 目录 在目录配置文件夹里新建 plugins 目录,用来保存插件 ② 安装插件 将压缩包解压到该目录(连同目录一起解压) 3. 开启插件 重启 Obsidian,打开插件即可使用。
繁依Fanyi
2023/05/07
3.5K0
Obsidian 插件安装
Jira插件安装
一、Jira插件列表(可以将下面免费插件直接下载,然后登陆jira,在"插件管理"->"上传插件",将下载后的免费插件直接进行上传安装即可) 序号 插件名称 功能概要 供应商 资源 100用户报价($) 1 GreenHopper 敏捷项目管理 Atlassian 下载 2000 2 Universal Plugin Manager 管理插件的查找、安装、升级、授权等,也可用于Confluence,FishEye,Bamboo,Crucible 及S
洗尽了浮华
2018/04/18
9K0
Jira插件安装
eclipse 安装svn插件 maven插件 web插件 erm插件
maven :m2eclipse – http://m2eclipse.sonatype.org/sites/m2e
全栈程序员站长
2022/08/05
2.1K0
Typecho | 博客程序、主题及插件安装常见问题汇总
warning: 这篇文章距离上次修改已过608天,其中的内容可能已经有所变动。
Ranlychan
2023/03/05
1K0
Typecho | 博客程序、主题及插件安装常见问题汇总
idea安装mybatis插件_maven 插件
MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:
全栈程序员站长
2022/11/10
2.1K0
关于安装Jenkins插件报错问题的最新发现
主要就是把update-center.json里的下载地址替换成镜像站的下载地址,而这两天我又发现了update-center.json里面的下载地址没有被替换掉,于是我看了看update-center.json里面的地址,发现已经由下载地址前缀已经由 http://updates.jenkins-ci.org 变成了 https://updates.jenkins.io/ ,打开网站,发现地址确实换新的了,然后我试着下载一个附件 https://updates.jenkins.io/download/plugins/BlazeMeterJenkinsPlugin/4.7/BlazeMeterJenkinsPlugin.hpi
全栈程序员站长
2022/07/05
3800
关于安装Jenkins插件报错问题的最新发现

相似问题

Android Studio中Android库与Java库的区别

33

Android Studio Java库模块与Android库模块

25

在Java 1.7中使用Android Studio

60

使用Java在Android Studio上使用WebRTC

10

在Android Studio中使用GitHub库

223
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文