评价这篇文章

背景

我和一位同事正在为一个想要部署AzureMFA服务器的客户验证许多方案。从身份管理的角度来看,其中一个需求是能够与mfa服务器交互以获取用户信息。这引导我们探索什么是可能的,以及如何最好地接近它。

关于如何写这篇文章,标题已经给出了很多。但为什么呢?由于Azure mfa服务器是微软通过收购手机生产商而获得的产品,通常与Microsoft堆栈中的应用程序和服务交互的方法不适用。几乎没有关于如何使用PowerShell与Azure MFA服务器交互的信息。因此,这篇博客文章详细介绍了我们所学到的,以及我们如何使用PowerShell从AzureMFA服务器获取信息。

本帖包括:

  • 连接到Azure MFA Web服务SDK
  • 在mfa数据库中搜索用户
  • 返回有关mfa数据库中用户的信息
  • 通过mfa服务器对用户电话进行测试呼叫

先决条件

这里没有介绍一些先决条件,因为您可以快速找到安装/配置Azure MFA服务器的许多指南。

  • 你需要一个天蓝色mfa环境(显然)
  • 下载Azure MFA Web服务SDK
  • 安装和配置Azure MFA Web Service SDK
  • 如果您没有在Azure MFA Web Service SDK服务器上使用公共SSL证书,则需要从Azure MFA Web Service SDK服务器导出证书并将其导入受信任的根证书存储在工作站上,您将使用PowerShell on连接到MFA环境。

连接到Azure MFA Web服务SDK

现在您已经满足了上面列出的先决条件,您可以使用PowerShell连接到API。URL是DNS名称在azure mfa web service sdk服务器的后面是sdk soap端点。如。https://mfa.yourdomain.com.au/multifactorauthwebservicessdk/pfwssdk.asmx?WSDL

在浏览器中尝试该URL,并使用mfa服务器中存在的帐户对Azure mfa Web服务sdk服务器进行身份验证。如果设置正确(包括您的SSL证书)您将看到以下内容。

https://dl.dropbox用户内容.com/u/76015/blogimages/azuremfasdk/sdk%20connect.png

下面的简单脚本将执行相同的操作,但通过PowerShell。更新您的域,用户名,您的mfa web service sdk服务器的密码和url。

在mfa数据库中搜索用户

现在,我们已经设置了一个到mfa Web服务SOAP API端点的Web服务代理连接,我们可以开始从中获取一些信息。搜索用户使用'findusers_4'打电话。它有许多参数可以设置来更改结果。我在这篇文章中做了简单的介绍,并使用“*”作为返回mfa数据库中所有用户的标准。为你的目的而改变。

返回有关mfa数据库中用户的信息

使用与上面搜索条件稍有不同的条件,我返回一个条目并设置$M澳元变量。然后我在手机里用这个,getusersettings&getuserdevices调用,如下图所示,以检索有关它们的所有信息。

通过mfa服务器对用户电话进行测试呼叫

最后,我们不只是使用来自mfa环境的信息,而是实际触发一些东西。从我们的测试环境中选择与之关联的同事的手机号码的身份,我触发了mfa服务器调用它们来授权它们的会话(它们显然没有请求)。我可能在房间的另一边做过几次,他们的电话响了,请求认证批准,我兴高采烈地看着他们。

下面是完整的脚本片段。

希望能帮助别人。

在Twitter上关注Darren@达伦约罗宾森

类别:
ADFS应用程序开发和集成Azure平台身份和访问管理PowerShellWCFWebAPI
标签:

加入对话!8条评论

  1. 很好。最后,我可以将用户导出到csv文件
    希望PS模块尽快准备好

    答复
  2. 干得好!谢谢分享!

    答复
  3. 顺便说一句,我可以用上面的步骤导出/操作数据,但我不能调用第二次验证。继续获取以下错误:mfa调用结果描述:调用方法时不允许使用direct sdk。我使用的是7.3版本。知道我做错了什么吗?

    答复
    • 达伦,再次感谢您的分享。如果其他人有同样的错误,这是我做的。

      不确定这是否是较新版本的问题,但是,使用pfsdk的authenticationType不起作用并触发“调用方法时不允许使用direct sdk”错误。我刚删除$initiatingAuthenticationType=“pfsdk”的显式分配在您的代码中,然后调用pfauth_4函数,如下所示:

      $result=$wsp.pfauthuser_4([string]$mfauser,$authenticationType,……

      这将创建一个值authtype=unspecified,但第二个因素已完成:)。

      干杯!

      答复
  4. 嗨,达伦和克劳德团队,另一个非常有用的帖子。像往常一样设定基准。

    在6.3.1版的sdk上,99.9%的用户支持我。小调整:
    1。为$tagMatchType设置一个int值,通过findUsers_4调用返回结果:$tagMatchType=value_uu=3,用于“alluser”。值0,1,2,3,
    2。从$userdevices中删除上面列出的设备的值。

    再次感谢。

    我也看到了微软正在对SDK的支持进行折旧。什么给予?我们还应该如何利用prem服务器部署的这个专有pf数据库,即使我们不想在2018年11月后通过云服务触发mfa呼叫?

    当做,Leigh。

    答复
  5. 好文章……你知道有没有办法找出代币的“上次使用日期”。我们正在试图确定有多少用户一直在使用他们公司发行的硬件令牌。

    答复

留下答复