本地ASP.NET开发页面使用AzureAD(AAD)验证登录

Azure和Office365已不是一个热门话题了,因为所谓的云时代已经走进了技术大师们的内心,大家多少有一定了解了,所以就不多介绍了,我的Blog中之前也写了很多关于Azure及Office365的相关文章,如果有兴趣的同学可以参考一下。一般企业内部如果使用了Azure或者Office365产品的话,都会跟本地的域进行验证绑定,然后可以使用相关工具(Dirsync & Azure AD Connect)将本地的域用户同步到AAD里面,然后配置ADFS使用本地的域用户格式进行登录及管理Azure相关服务等,当然也有其他的一些做法,具体就不介绍了,我们首先要知道,Azure 和Office365使用的是同一个AD服务,所以注册的时候自定义的域名称也就是唯一标识了,比如,当注册一个oa@ixmsoft.onmicrosoft.com(portal.office.com)的office365顶订阅的账户的时候,系统也会保留一个oa@imxmsoft.onmicrosoft.com;(manage.windowsazure.com)的订阅账户如果是国内供应商提高的需要将结尾更改为:partner.onm51CTO提醒您,请勿滥发广告!即可。在任何一个账户上新建账户都会显示。如果一开始注册了Office365,就可以通过https://manager.onmicrosoft.com进行提示注册或者管理对应的Azure订阅了,如果是注册了Azure,就可以通过访问https://portal.office.com 进行提示注册或管理对应的Office365订阅了。今天呢,我们主要介绍的是如果通过AAD验证本地开发的自定义web服务(ASP.NET)

首先是介绍一下大概的原理,原理就是我们需要在AAD中注册一个程序,然后通过配置程序值返回对应的URL信息,然后完成对应的验证,整个过程跟本地配置ADFS及ADFS验证登录过程非常类似,废话不多说了,具体见下:

我们当然是首先需要一个Azure账户,具体就不掩饰了,然后验证本地域;

我们首先加本地域添加到Azure中,我们只需要验证就可以,在dns中添加一条txt记录,不使用skype、exchange等服务即可;添加后,我们可以使用Azure AD Connect 工具将本地的用户同步到Azure AD中,当然,也可以直接在本地以添加的域新建用户。我们因为不用sso,所以不勾选sso

image

开始验证DNS

image

然后我们在公网DNS上添加验证记录

image

验证成功

image

然后我 可以看见在office365上也会出现域信息

image

接下来我们添加用户;然后后缀名以本地域进行添加

image

添加完成

image

接下来就是添加应用程序了

image

选择添加开的应用程序

clip_image001

我们定义任意名称

clip_image002

定义返回的url

clip_image003

添加完成后,我们也可以通过配置选项进行修改

clip_image004

我们首先选择客户端ID,复制数据

clip_image005

复制后,我们在代码中修改;我们首先是通过Visual Studio打开相关的代码项目;配置好对应的路劲

image

image

打开web.config配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?xml version= "1.0"  encoding= "utf-8" ?>   
<!--    
   For  more  information on how to configure your ASP.NET application, please visit    
   
http: //go .microsoft.com /fwlink/ ?LinkId=301880
     
   -->    
<configuration>    
   <appSettings>    
     <add key= "webpages:Version"  value= "3.0.0.0"  />    
     <add key= "webpages:Enabled"  value= "false"  />    
     <add key= "ClientValidationEnabled"  value= "true"  />    
     <add key= "UnobtrusiveJavaScriptEnabled"  value= "true"  />  
     <add key= "ida:ClientId"  value= "cbc2336e-e7aa-445e-a751-8219830b873a"  />     <!--在AAD中注册应用程序完成时获取到的ID-->    
     <add key= "ida:Tenant"  value= "beyondsoft100.partner.onm51CTO提醒您,请勿滥发广告!"  />       <!--contoso.onmicrosoft.com]--> <!--当前租户名称:当前目录中粗行间用户是所用的后缀名-->    
     <add key= "ida:AADInstance"  value="
https: //login .chinacloudapi.cn/{0}"
  />    <!--在AAD的端点好看也可以获取到-->    
     <add key= "ida:PostLogoutRedirectUri"  value="
https: //localhost :44320?username= test /"
  />     <!--在AAD中注册程序时所填写的返回URL地址-->    
     
   < /appSettings >    
   <system.web>    
     <compilation debug= "true"  targetFramework= "4.5"  />    
     <httpRuntime targetFramework= "4.5"  />    
   < /system .web>    
   <runtime>    
     <assemblyBinding xmlns= "urn:schemas-microsoft-com:asm.v1" >    
       <dependentAssembly>    
         <assemblyIdentity name= "System.Web.Optimization"  publicKeyToken= "31bf3856ad364e35"  />    
         <bindingRedirect oldVersion= "1.0.0.0-1.1.0.0"  newVersion= "1.1.0.0"  />    
       < /dependentAssembly >    
       <dependentAssembly>    
         <assemblyIdentity name= "WebGrease"  publicKeyToken= "31bf3856ad364e35"  />    
         <bindingRedirect oldVersion= "0.0.0.0-1.6.5135.21930"  newVersion= "1.6.5135.21930"  />    
       < /dependentAssembly >    
       <dependentAssembly>    
         <assemblyIdentity name= "Microsoft.Owin"  publicKeyToken= "31bf3856ad364e35"  culture= "neutral"  />    
         <bindingRedirect oldVersion= "0.0.0.0-3.0.1.0"  newVersion= "3.0.1.0"  />    
       < /dependentAssembly >    
       <dependentAssembly>    
         <assemblyIdentity name= "Microsoft.Owin.Security"  publicKeyToken= "31bf3856ad364e35"  culture= "neutral"  />    
         <bindingRedirect oldVersion= "0.0.0.0-3.0.1.0"  newVersion= "3.0.1.0"  />    
       < /dependentAssembly >    
       <dependentAssembly>    
         <assemblyIdentity name= "Antlr3.Runtime"  publicKeyToken= "eb42632606e9261f"  culture= "neutral"  />    
         <bindingRedirect oldVersion= "0.0.0.0-3.5.0.2"  newVersion= "3.5.0.2"  />    
       < /dependentAssembly >    
       <dependentAssembly>    
         <assemblyIdentity name= "Newtonsoft.Json"  publicKeyToken= "30ad4fe6b2a6aeed"  culture= "neutral"  />    
         <bindingRedirect oldVersion= "0.0.0.0-6.0.0.0"  newVersion= "6.0.0.0"  />    
       < /dependentAssembly >    
       <dependentAssembly>    
         <assemblyIdentity name= "System.Web.Helpers"  publicKeyToken= "31bf3856ad364e35"  />    
         <bindingRedirect oldVersion= "1.0.0.0-3.0.0.0"  newVersion= "3.0.0.0"  />    
       < /dependentAssembly >    
       <dependentAssembly>    
         <assemblyIdentity name= "System.Web.WebPages"  publicKeyToken= "31bf3856ad364e35"  />    
         <bindingRedirect oldVersion= "1.0.0.0-3.0.0.0"  newVersion= "3.0.0.0"  />    
       < /dependentAssembly >    
       <dependentAssembly>    
         <assemblyIdentity name= "System.Web.Mvc"  publicKeyToken= "31bf3856ad364e35"  />    
         <bindingRedirect oldVersion= "1.0.0.0-5.2.3.0"  newVersion= "5.2.3.0"  />    
       < /dependentAssembly >    
       <dependentAssembly>    
         <assemblyIdentity name= "System.IdentityModel.Tokens.Jwt"  publicKeyToken= "31bf3856ad364e35"  culture= "neutral"  />    
         <bindingRedirect oldVersion= "0.0.0.0-4.0.2.28"  newVersion= "4.0.2.28"  />    
       < /dependentAssembly >    
       <dependentAssembly>    
         <assemblyIdentity name= "Microsoft.IdentityModel.Protocol.Extensions"  publicKeyToken= "31bf3856ad364e35"  culture= "neutral"  />    
         <bindingRedirect oldVersion= "0.0.0.0-1.0.2.28"  newVersion= "1.0.2.28"  />    
       < /dependentAssembly >    
     < /assemblyBinding >    
   < /runtime >    
< /configuration >

image

通过对应的数据进行修改即可

image

image

所以修改为 fanwei.onmicrosoft.com

clip_image001[4]

然后修改登录域名,国际版本为

国际版本为windows.net

image

最后,修改需要返回的url

clip_image001[6]

,保存后,我们进行测试

image

我们可以查看已经开始执行debug模式

clip_image001[8]

同时我们也可以查看到登录页面了,

clip_image002[4]

我们单击登录

我们发现直接跳转到了我们的新建的WEBSERVER的应用程序界面了,

其实该界面也类似于我们的ADFS界面

clip_image003[4]

我们使用user01@ixmsoft.com用户进行登录

clip_image004[4]

其实已经登录成功了,提示第一次登录需要修改密码

clip_image005[4]

我们按照提示修改一次密码,及正确登录

clip_image006

------------------------------------------------------------------------------------------------------------------

我们为了更好的显示,我们修改本地的显示页面

定义显示内容即可

clip_image007

clip_image008

登录成功了。页面的右上角正常显示当前登录的用户名

clip_image009




本文转自 高文龙 51CTO博客,原文链接:http://blog.51cto.com/gaowenlong/1829833,如需转载请自行联系原作者

ASP.NET应用程序的安全方案(二)—授权 摘要:本文ASP.NET应用程序授权的概念,介绍了各种授权模式并进行了比较,阐述了选择授权模式的机制。 关键字:授权 authorization ASP.NET WEB应用 1.1. 授权概念     任何成功的应用程序安全策略的基础都是稳固的身份验证和授权手段,以及提供机密数据的保密性和完整性的安全通讯。     授权(authorization)过程负责控制通过了身份验证的客户端可以访问哪 阅读详情

相关推荐

AspNetCoreID4External:外部OpenID通过AAD连接登录到IdentityServer4

使用OpenID Connect和Azure Active Directory更新ASP.NET Core中的Microsoft帐户登录 历史 2020-12-06更新到.NET 5,仅使用Angular CLI 2020-07-11添加了使用刷新令牌的Angular CLI客户端 2020-07-05更新了所有npm,nuget软件包 2020-05-06更新了FIDO2,切换为使用EC证书刷新令牌 2020-05-03将OIDC库更新为版本11,nuget软件包 2020-03-03添加了对FIDO2的支持,已更新为Angular 9 2020-01-04更新了nuget程序包,相同站

asp.net 使用AD进行身份进行验证

//在登录界面增加一个AD验证方法 private static DirectoryEntry GetDirectoryObject(string userName,string userPwd) { DirectoryEntry entry = null; try { entry = ...

weixin_34392435的博客 280

SIMULIA-Simpack 2022x新功能介绍

增加库伦摩擦类型力元95 Coulomb Friction增加了3种新的摩擦方向类型用于模拟平面、圆柱和球面摩擦。针对平移和旋转摩擦改进了滑动到粘着过渡阶段的检测,增加一个参数定义两种不同的滑移-粘滞过渡模式,即“Unloaded stick stiffness”和“Preload stick with last slip”。新增加124'Applied Load’力元允许用户将力或扭矩作为恒定值或通过激励元素施加到To Marker点上。该力元建模操作方便,效率高。支持线性柔性体装配。

crystalzhan的博客 1047

本地JAVA开发页面使用AzureAD(AAD)验证登录

我们前一篇文章介绍了本地使用APS.NET开发的WEB服务如何使用AZURE AD(AAD)验证登录,今天我们主要介绍本地使用JAVA开发的WEB服务如何使用AAD验证登录。其实方法跟ASP.NET是一样的,需要在AZURE中注册服务才可以,然后得到对应Client ID 、Security ID、URL等信息。具体见下: 我们首先将代码整理一下,然后使...

weixin_33727510的博客 2246

UE5新手必看:Gameplay框架中的GameInstance与子系统实战指南(含蓝图配置)

本文为UE5新手提供了Gameplay框架中GameInstance与子系统的实战指南。文章深入解析了GameInstance作为全局数据中枢的核心作用与生命周期,并手把手演示了如何创建自定义GameInstance、构建模块化的子系统(如存档管理),以实现跨关卡的持久数据管理。指南旨在帮助开发者构建清晰、可维护的项目架构,解决数据管理混乱的常见痛点。

weixin_29015801的博客 574

计算机组成原理课程设计_微程序控制的简单模型机设计

微程序控制的简单模型机设计 要求 基本要求 完成一个简单主机的设计,模型机应具备如下能力:在自行设计的指令集基础上,运行自行编写的简单用户程序,实现特定运算功能。 弹性要求 在此基础上,完成必要的扩展,实现模型机的功能扩展设计,包括:实现多种运算功能(指令集的扩充)、支持更为丰富的寻址方式、有更为完善的微程序设计等。 实验软件和硬件环境 QuartusII, FPGA计算机组...

sailist的记录站 3万+

ASP.NET 5探险(5):利用AzureAD实现单点登录

题记:在ASP.NET 5中虽然继续可以沿用ASP.NET Identity来做验证授权,不过也可以很容易集成支持标准协议的第三方服务,比如Azure Active Directory。 其实,在ASP.NET 5中集成AzureAD,利用其进行验证和授权,是非常简单的。因为:首先Azure Active Directory提供了OAuth2.0、OpenId Connect 1.0、SAML和...

weixin_30519071的博客 133

华为OD机试真题 新系统2026-04-01 Java&Go 实现【勇攀数字高峰】

请你在给定的数字地形图中寻找登山路径,数字代表当前位置的海拔高度,要求从最低海拔出发,不断攀登,最终到达最高山峰。你需要寻找所有满足条件的登山路径。地图已经保证最低海拔和最高山峰都只有一个。

MISAYAONE的博客 620

微软身份平台的手动JWT访问令牌验证:一个深度探索的开源宝藏

微软身份平台的手动JWT访问令牌验证:一个深度探索的开源宝藏 在当今云计算和微服务架构盛行的时代,安全地保护Web API是每个开发者不可忽视的课题。微软推出的一个开源项目——“手动使用微软身份平台验证JWT访问令牌”成为了处理这一挑战的强大工具。本文将深入剖析这个项目,揭示其技术精粹,展示应用场景,并突出它的独特优势。 项目介绍 该项目旨在指导开发者如何在ASP.NET Core框架下,不依赖于...

gitblog_00074的博客 390

华为OD机试双机位B卷 - 比赛的冠亚季军 (C++ & Python & JAVA & JS & GO)

华为OD机试双机位B卷 比赛的冠亚季军,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。 华为OD机试 比赛的冠亚季军

qq_45776114的博客 703

SAP-ABAP:字符与数值类型转换详细指南

SAP-ABAP:字符与数值类型转换详细指南

baidu_35680696的博客 1480

如何构建基于Azure AD认证和Microsoft Graph的简单Blazor Web应用

作为.NET开发者,我们都听说最近Blazor比较火。Blazor是一个使用.NET构建交互式客户端Web UI的框架。我们将在本篇博客中重点介绍Blazor Server,它提供了在ASP.NET Core应用程序中在服务器托管Razor组件的支持。通过SignalR连接更新UI。本篇示例的授权认证的部分就利用Azure AD来做,并会从Microsoft Graph获取数据。 前提条件 安装.NET Core 3.1 SDK,Visual Studio 2019或其他偏好的.NET IDE,还有就是Az

983

纳米尺度仿真软件:GROMACS_(3).分子动力学模拟原理

分子动力学(MD)模拟是一种强大的计算方法,通过数值积分牛顿运动方程,追踪粒子在时间上的位置和速度变化,提供关于体系动力学行为的详细信息。选择合适的力场、设置初始条件、应用边界条件、控制温度和压力、选择合适的时间步长、计算能量和力,是 MD 模拟的关键步骤。通过这些步骤,可以对各种化学、生物和材料体系进行模拟和分析,揭示其结构、动力学和热力学性质。高级应用如反应路径模拟和蛋白质折叠研究,进一步扩展了 MD 模拟的应用范围。

kkchenjj的博客 1100

ASP.NET专题研究——登录权限

(一)关于“权限验证”的基础知识: 通常我们注意到有这样一个现象:在某些论坛中我们可以查看别人的帖子,但是如果你点击了回复,不是跳转到Reply类似的回复页面而是跳转到了Login.aspx页面。如果您不知道ASP.NET中还存在着这么一个可以方便检测是否是匿名用户登录的功能,通常你会选择Session去记录,简略的代码往往是这样: 先写一个类,直接继承于System.Web.UI.Pa...

weixin_30377461的博客 190

NLP高频面试题(一)——Transformer的基本结构、作用和代码实现

本文详细介绍了Transformer模型的基本结构和PyTorch代码实现过程。首先解析了Transformer的核心组成部分,包括嵌入层、多头自注意力机制、位置编码、前馈神经网络、编码器和解码器等模块,并通过清晰的代码示例逐步展示了如何在PyTorch中构建完整的Transformer模型。文末提供了一个可运行的简单示例,帮助读者快速理解并实践Transformer的核心原理与实现方法。

WeLearnNLP 1026

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

asp.net 的认证 (authentication) 和授权 (authorization)

1.authorization是用过的,用于访问webapi是否有访问权限。在默认管道模型的Module里,有3个(authentication)和2个authorization的Module &lt;httpModules&gt;            &lt;add name="OutputCache" type="System.Web.Caching.OutputCacheModule" /...

qqqgg的专栏 5532

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Asp.net 身份验证、授权

1.       Asp.net是依存于IIS的一个服务,说到Asp.net的安全相关的话题当然要有一个整体上的思路:IIS接收—》IIS验证—》IIS授权---》ASP.net验证---》Asp.net授权---》资源返回给用户 IIS从网络上接收到一个HTTP WEB请求可以使用SSL技术来保证服务器的身份,此外SSL也可以提供一个安全通道来保护客户端和服务器端的机密数据的传送。IIS使用基本

1079

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ASP.NET里面的身份验证和授权(一)

在学习ASP.NET中,接触到了里面的身份验证和授权。我们就来具体总结一下这方面的知识。说到身份验证,我们以前的身份验证和授权都是基于Session来做的,都是从数据库中进行查找,比如说登陆的页面,我一登陆的时候输入用户名和密码,在数据库中查找,如果查找发现它是正确的,我们在Session中做一个标记,记录下来它是正确的。以后在访问其他页的时候,如果你有权限限制的话,每一页都判

不忘初心 5006

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

最近我在准备一个分享,就是基于.NET 6.0的云原生开发Microsoft 365应用,这个看起来很高大上的东东,其实我理解主要就是能把应用容器化,便于与环境无关地进行分发和部署。如果理解有误,请大家纠正我。下面是其中的一个例子,请大家有空参考。分享会在5/6日的晚上,这是.NET 二十周年的一个活动,直播形式。具体请留意后续通知。https://github.com/...

dotNET跨平台 536

微搭低代码实现aad的sso

微搭低代码平台是一种可帮助您快速构建和部署应用程序的工具,而无需手动编写大量代码。选着 Oauth2 点击下一步。

weixin_46600931的博客 1261

基于 CAS 实现通用的单点登录解决方案(二):CAS 客户端搭建及单点登录测试

客户端配置 首先我们创建两个用于单点登录测试的客户端 Web 应用testapp和otherapp(如果对应应用之前已经存在,则无需重复创建),下面我们以testapp为例,进行初始化配置和演示,otherapp依葫芦画瓢即可。 和 CAS 服务端一样,我们需要在 Laravel 应用中通过 CAS PHP 客户端与 CAS Server 进行通信。CAS 官方为 PHP 语言提供了客户端实现phpCAS,此外,Laravel 生态也有基于 phpCAS 实现的扩展包subfissi...

qq_32421489的博客 1175

SSO-C#跨域单点登录(一)

开篇就是定义Model,数据为先: public class Something { public const string CookieName = "User"; public const double TimeOut = 1; }public class User { public string UserName

极客神殿 6396
上一篇: 格雷码问题
下一篇: Cobbler-自动化部署神器
weixin_33728708
博客等级 码龄11年 5472粉丝 1452原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值