zoukankan      html  css  js  c++  java
  • 微软CRM 基于 ADFS自定义多重身份验证

    一、背景

    由于项目突然进行的护网行动,要求在登录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

    螃蟹在剥我的壳,笔记本在写我。 漫天的我落在枫叶雪花上。 而你在想我。
  • 相关阅读:
    C语言寒假大作战04
    C语言寒假大作战03
    C语言寒假大作战01
    C语言寒假大作战02
    C语言I作业12—学期总结
    C语言I博客作业11
    C语言I博客作业10
    C语言I博客作业09
    C语言I博客作业08
    20199101 2019-2020-2 《网络攻防实践》综合实践
  • 原文地址:https://www.cnblogs.com/skytitan/p/13223590.html
Copyright © 2011-2022 走看看