ASP.NET Core 集成AAD认证在Docker中运行时要注意的一个问题

最近我在准备一个分享,就是基于.NET 6.0的云原生开发Microsoft 365应用,这个看起来很高大上的东东,其实我理解主要就是能把应用容器化,便于与环境无关地进行分发和部署。如果理解有误,请大家纠正我。

下面是其中的一个例子,请大家有空参考。分享会在5/6日的晚上,这是.NET 二十周年的一个活动,直播形式。具体请留意后续通知。

https://github.com/chenxizhang/dotnet-graph-web/blob/master/README.MD

这里有一个问题,我折腾了很久,主要就是我这个范例应用用到了AAD做身份验证,也需要访问Microsoft Graph。 这个项目直接运行,或者部署都是可以正常运行的,但是如果用docker运行则可能会遇到下面的错误,就是说,我的网站其实是 https 开头的,但相关的中间件却会用 http 地址去作为 redirect URI ,这样自然是会报错的,因为AAD application里面注册的是(也必须是)https开头的的地址。

991862660acea773c17cffec6e2f51ff.png

查找了一圈原因,结果发现,这个之前也有人遇到了,具体的bug讨论在这里 https://github.com/AzureAD/microsoft-identity-web/issues/115。 

一个解决方案是,在Dockerfile 中加入下面这样一行

ENV ASPNETCORE_FORWARDEDHEADERS_ENABLED=true

然后,整个世界清净了。

完整的Dockerfile定义如下

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /source# 复制文件
COPY *.csproj .
RUN dotnet restore# 编译
COPY . .
WORKDIR /source
RUN dotnet publish -c release -o /app --no-restore# 最后处理
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
COPY --from=build /app ./
EXPOSE 80
EXPOSE 443
# 下面这一句特别关键,否则会出现错误
ENV ASPNETCORE_FORWARDEDHEADERS_ENABLED=true
ENTRYPOINT ["dotnet", "graphweb.dll"]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QCon上海2015精彩回顾和总结

金秋十月,历时三天的QCon上海2015于10月17日顺利闭幕。本次大会邀请了100多位技术专家,为参会者奉上了100多场精彩的技术演讲。\\本次QCon邀请了极客邦创始人兼CEO霍泰稳,携程旅行网CTO、高级技术副总裁叶亚明,丁香园技术VP、EGO上…

ArcGIS中合并(merge)、联合(union)、追加(append)、融合(dissolve)的用法区别与联系

ArcGIS中,针对矢量数据拼接,有多个工具:合并(merge)、联合(union)、追加(append)、融合(dissolve)等,本文以甘肃省1:100万县级数据详细讲解以上各个工具的用法、区别和注意事项。 有关合并(merge)、联合(union)、追加(append)、融合(dissolve)等基础操作内…

Singleton

问题:编写一个Singleton类 简单的方式 1 package cn.changb.singleton;2 3 /**4 * 简单的方式:弊端是在并发执行时,14行处可能存在多个实例5 */6 public class SingletonDemo1 {7 private static SingletonDemo1 INSTANCE;8 9 private Singlet…

Flutter之运行提示Could not update files on device: Connection closed before full header was received

1 问题 运行flutter app提示错误如下 Performing hot restart... Syncing files to device MIX 3... Could not update files on device: HttpException: Connection closed before full header was received, uri http://127.0.0.1:65054/-tzvW6oGieQ/ Restarted applicati…

C++ 语法都不会怎么写代码? 03

作者简介 作者名:1_bit 简介:CSDN博客专家,2020年博客之星TOP5,蓝桥签约作者。15-16年曾在网上直播,带领一批程序小白走上程序员之路。欢迎各位小白加我咨询我相关信息,迷茫的你会找到答案。系列教程将会…

自定义dialog弹窗html,自定义H5页面dialog弹窗

弹窗一:样式如下:HTML代码://弹出窗通知取消确认//遮罩层$(.dialog .content).text(text);$(.dialog, .mark).removeClass(hide);}tipDialog("1111");$(".sure").click(function(){var type $(this).attr(type);if(typeb…

【三维激光扫描】第二章:国内外三维激光扫描设备简介

地面三维激光扫描仪是地面激光扫描系统中最主要的硬件设备,近年来得到了快速发展,主要体现在品牌数量、性能指标、类型等方面的变化。本章主要介绍国内外主要设备的基本情况,对国内外研究现状进行分析,最后指出目前存在的问题与未来的发展趋势。 2.1 国外地面三维激光扫描仪…

Winform定时启动

System.Timers.Timer t;int sum 0;int qian;int bai;int shi;int ge;public 测试定时启动(){InitializeComponent();}//1.使用System.Timers.Timer//2.threadThread th;//定义线程private void 测试定时启动_Load(object sender, EventArgs e){textBox1.Text "00.00&quo…

聊一聊容器暂停退出

1背景介绍 最近在写 docker 相关教程,过程中发现容器暂停退出竟然有 docker kill、docker stop 和 docker pause 三种方式,今天就来分析下三者间的区别。2辅助指令 docker top - 查看容器进程docker event - 查看容器相关事件docker stats -…

初学者必看的文章:在VM12中安装 RedHat RHEL7.2  系统的详细步骤:看我如何操纵RHEL系统...

一、开始安装 1)新建虚拟机 RHEL7.2 2)成功引导系统--开机出现此画面 Install Red Hat EnterpriseLinux 7.2 安装RHLE7.2 操作系统 Test this edia & install RedHat Enterpris…

Flutter之点击按钮打开百度链接

1 需求 点击按钮,打开百度链接 2 代码实现 import package:flutter/material.dart; import package:url_launcher/url_launcher.dart;void main() {runApp(MyApp1()); }class MyApp1 extends StatelessWidget {overrideWidget build(BuildContext context) {return…

用计算机算出你喜欢吃你喜欢的人,Go for it七年级下学期1-12单元(期末复习)句子翻译专练...

Go for it七年级下学期1-12单元(期末复习)句子翻译专练Unit11.你的笔友是哪里人?Where is your _________ _______ _________? ( pe n , pal , from )2.他是澳大利亚人.He is ________ _________. (is, from, Australian)3.他住在哪里?Where __________ he________. (does ,…

因为我的名字特殊大家都是用异样的眼光在看着我 04

作者简介 作者名:1_bit 简介:CSDN博客专家,2020年博客之星TOP5,蓝桥签约作者。15-16年曾在网上直播,带领一批程序小白走上程序员之路。欢迎各位小白加我咨询我相关信息,迷茫的你会找到答案。系列教程将会…

【三维激光扫描】第三章:点云数据采集

第一节 野外扫描方案 为了获取高精度完整的点云数据,工作过程-般包括项目计划制订、 外业数据采集和内业数据处理三个环节。《规程)中指出地面三维激光扫描总体工作流程应包括技术准备与技术设计、控制测量、数据采集、数据预处理、成果制作、质量控制与成果归档。本章首先闸…

undefined reference to 问题解决方法

最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误: (.text0x13): undefined reference to func 关于undefined reference这样的问题,大家其实经常会遇到,在此&#xff0c…

WPF 实现扇形统计图

扇形统计图原文作者:ArcherSong博客地址:https://www.cnblogs.com/ganbei/绘制一个扇形原理也是基于Canvas进行绘制;ArcSegment[1]绘制弧形;绘制指示线;绘制文本;鼠标移入动画;显示详情Popup;源码Github[2]…

Codeforces Round #359 div2

Problem_A(CodeForces 686A): 题意:\[ 有n个输入, \space d_i代表冰淇淋数目增加d_i个, -\space d_i表示某个孩纸需要d_i个, 如果你现在手里没有\space d_i个冰淇淋, 那么这个孩纸就会失望的离开。\] 你初始有x个冰淇淋…

Flutter之测试Http和HttpClient

1 测试Http和HttpClient 导入包:在pubspec.yaml里面导入 http: ^0.12.2 main.dart里面导入 import package:http/http.dart as http; import dart:convert; import dart:io; 2 代码实现 import package:flutter/material.dart; import package:url_launcher/url_lau…

基于zookeeper的solrCloud集群搭建

1.安装及搭建相关环境 1.1环境准备 centos7,jdk1.8,tomcat8,zookeeper3.4.X,solr4.10.X 链接: https://pan.baidu.com/s/1i47IuKd 密码: emqt 2.zookeeper集群搭建 2.1复制zookeeper [rootMiWiFi-R3-srv ~]# mkdir /usr/local/solr-cloud [rootMiWiFi-R3-srv ~]# cp -r zookee…

【小白必懂】C语言求完全数

注意:学生党如果存在付费问题可以加我好友,我可以开单篇短时间的免费哟~ 私聊我就好~ 情景再现 👸小媛:小C,你知道什么是完全数吗? 🐰小C:知道呀,难道是今天老师又出题…