首页 > 其他 > 详细

微软CRM 基于 ADFS自定义多重身份验证

时间:2020-07-02 11:54:29      阅读:57      评论:0      收藏:0      [点我收藏+]

一、背景

由于项目突然进行的护网行动,要求在登录CRM时再加一层服务器端的验证。

二、解决方案

利用ADFS多重身份验证机制,自定义验证策略,实现账号密码登录后,自动发送短信验证至用户手机,并进行验证。(如果没有短信发送接口,可以进行邮箱验证!)

三、实现过程

1、创建一个面向 .NET 4.5 .NET Framework的类库

技术分享图片

2、添加引用-->Microsoft.IdentityServer.Web.dll,文件位于ADFS服务器的下图所示文件夹.

技术分享图片

技术分享图片

3、编写代码(详情见附件)

a.创建三个类别继承接口:IAuthenticationAdapter、IAuthenticationAdapterMetadata、IAdapterPresentationForm

b.注意编写继承IAdapterPresentationForm类的时候,需要新增资源文件,用户编写自定义验证页面:例如附件中的CustomPage.txt

技术分享图片

技术分享图片

c.注意附件中的WebApiUrlConfig.json文件,用户配置接口地址,需要注册至ADFS(注册方法见 5、注册身份验证提供者至ADFS服务器)

4、注册程序集至ADSF服务器的GAC中

a.增加签名

技术分享图片

b.由于ADFS服务器中没有安装.net的框架,所以需要从本地拷一份gacutil工具至ADFS服务器

下图示例为windows10中的工具位置,将文件夹拷贝至ADFS服务器

技术分享图片

c.将编译好的dll拷贝至ADFS服务器的gacutil.exe同一目录下

技术分享图片

d.打开管理员:命令提示符,执行下图命令

gacutil /if .\RekTec.Crm.AdfsCaptcha.dll -- 添加程序集至缓存

gacutil /l RekTec.Crm.AdfsCaptcha        --  查询程序集详情

技术分享图片

5、注册身份验证提供者至ADFS服务器

Register-AdfsAuthenticationProvider –TypeName "RekTec.Crm.AdfsCaptcha.MFAadapter.CustomAuthenticationAdapter,RekTec.Crm.AdfsCaptcha, Version=1.0.0.0, Culture=neutral, PublicKeyToken=090b4b325acf4ab5, processorArchitecture=MSIL" –Name "RtMFAProvider" -ConfigurationFilePath "WebApiUrlConfig.json"

蓝色字体:上图查询出的程序集详细信息。

绿色字体:自定义名称

黄色字体:接口配置文件(注意需要将附件中的配置文件放置 ADFS服务器,例如c:\soft)

注册完成后,重启ADFS服务器:net stop adfssrv   net start adfssrv

技术分享图片

power shell -> Get-AdfsGlobalAuthenticationPolicy 查询上面注册的身份验证策略

技术分享图片6、打开ADFS管理器,增加多重身份验证方法(RekTec MFA 短息验证码)

技术分享图片7、更改信任放访问控制策略(这个需要在添加 信赖发信任 进行访问控制策略配置)

技术分享图片技术分享图片

8、测试

a.输入正确的账号密码,点击登录

技术分享图片b.输入手机验证码,点击验证,登陆成功

技术分享图片

技术分享图片

四、更新dll操作

1、取消多重身份验证方法

技术分享图片2、撤消注册提供程序
// 删除AdfsAuthenticationProvider
Unregister-AdfsAuthenticationProvider –Name "RtMFAProvider"
3、从 GAC 中删除程序集
// 先根据程序集名称查询详情,后删除
gacutil /l RekTec.Crm.AdfsCaptcha
gacutil /u “RekTec.Crm.AdfsCaptcha, Version=1.0.0.0, Culture=neutral, PublicKeyToken=090b4b325acf4ab5, processorArchitecture=MSIL”

4、重新注册更新后程序集至GAC
gacutil /if .\RekTec.Crm.AdfsCaptcha.dll
5、重新注册提供程序(用PowerShell执行,注意:因为由于缓存的存在,每次更新完GAC程序集后,请重新打开PowerShell!)
Register-AdfsAuthenticationProvider –TypeName "RekTec.Crm.AdfsCaptcha.MFAadapter.CustomAuthenticationAdapter,RekTec.Crm.AdfsCaptcha, Version=1.0.0.0, Culture=neutral, PublicKeyToken=090b4b325acf4ab5, processorArchitecture=MSIL" –Name "RtMFAProvider"

6、重新启动ADFS服务
net stop adfssrv
net start adfssrv

7、增加多重身份验证方法

技术分享图片

 

 代码地址:https://github.com/SkyQAQ/ADFS_MFA

微软CRM 基于 ADFS自定义多重身份验证

原文:https://www.cnblogs.com/skytitan/p/13223590.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!