我们公司正在将越来越多的应用程序连接到我们的 ADFS 基础设施,以使用 SAML 身份验证,并且我们正在认真实施更多的多重身份验证方法,特别是 YubiKeys。
我将使用HERE中的编码示例为我们的 ADFS 基础设施(使用 ADFS 3.0,即 Windows Server 2012 R2)编写一个自定义 MFA 提供程序,并且有一个“障碍”,我还没有得到明确的答案.
为了使其正常工作,用户帐户需要链接到 YubiKey 令牌 ID#,并将其存储在 AD 中是理想的选择。 (我见过一些示例,其中 MFA 提供程序实际上是我不想要的外部 Web 应用程序。)
最初我将使用 User 类扩展属性之一进行测试,但最终我将为此创建一个专用属性。显然,这需要一个模式扩展,我很乐意这样做。
我不知道的是如何从 AD 中读取正在进行身份验证的用户的属性,以验证他们使用的 yubikey 是他们自己的(即确保他们没有使用其他人的)。谁能告诉我这是否可能?
我刚刚回答了我自己的问题:
将此代码添加到 AuthenticationAdapter 类中:
private string GetDeviceId(string upn)
{
DirectoryEntry entry = new DirectoryEntry();
DirectorySearcher mySearcher = new DirectorySearcher(entry, "(&(objectClass=user)(objectCategory=person)(userPrincipalName=" + upn + "))");
SearchResult result = mySearcher.FindOne();
string deviceId = (string)result.Properties["extensionAttribute10"][0];
return deviceId;
}
在哪里可以找到Adapter类文件?