AD FS 生成自定义身份验证方法代码开发

一、背景概述

AD FS是微软提供的一套统一身份认证解决方案,我个人认为是比较小众的产品,而且使用体验一般;AD FS里自带的是Azure MFA,由于国内短信发送可能存在不及时问题,企业决定使用阿里云短信作为MFA(Multi-Factor Authentication)多因子认证方法。

首先 官方开发指导手册在 Windows Server 中为 AD FS 生成自定义身份验证方法 | Microsoft Learn

 先看效果:

登录完会跳转到自定义的页面,然后后台同步会发送一条短信到用户手机

二、代码解读&实施过程

2.1 代码解读

代码里主要是三块:

1. IAuthenticationAdapter接口 这个主要是负责里面的核心业务逻辑 其中BeginAuthentication方法是进入的时候执行,TryEndAuthentication方法是 提交的时候执行

2.IAuthenticationAdapterMetadata 元数据展示,听名字应该就可以看出这个是一个命名用的,用来标记我这个叫什么名字,展示的简介

3.IAdapterPresentationForm 展示页面,就是对应的html片段,AD FS里不是独立的html页面,相当于是把页面读取到内存中,随用随取

我截图相关代码示例

BeginAuthentication方法

TryEndAuthentication方法

2.2 服务器部署 

把编译好的DLL上传到服务器某个目录用于后续注册

这一块建议跟着官方的手册做,我的示例如截图

首先要先把 NETFX 4.8 Tools工具上传到服务器,用来注册dll到系统用的

#注册1
gacutil.exe /if MFAadapter.dll
gacutil.exe /l MFAadapter

然后再到powershell里引用dll

#注册
$typeName = "MFAadapter.MyAdapter, MFAadapter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a591fa04bdf274e8, processorArchitecture=MSIL"
Register-AdfsAuthenticationProvider -TypeName $typeName -Name "MyMFAAdapter"
#查看
Get-AdfsAuthenticationProvider
net stop adfssrv
net start adfssrv

注意:

由于除了自身dll可能还会引用其他第三方的dll文件,这些dll文件需要放到AD FS的运行目录,目录地址:%windir%\ADFS

然后到AD FS里启用

三、避坑指南 

这个打包好的DLL是要求要强签名的,所以当引用较多的第三方类库的时候有的不是强签名而导致报错,需要给dll改为强签名,这个可以参考我的博客 C#未能加载文件或程序集。需要强名称程序集,异常来自 HRESULT:0x80131044-CSDN博客

  • 13
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值