AD FS自定义身份验证提供程序未返回身份验证方法声明

时间:2020-03-31 07:25:01

标签: c# saml adfs multi-factor-authentication claims-authentication

我为AD FS MFA制作了自定义身份验证提供程序。

我在元数据中定义了一种身份验证方法声明:

{ig_id}?fields=business_discovery.username({username}){Bbiography,followers_count,follows_count,media_count,website}

我还有一个TryEndAuthentication方法(这仅用于实验室目的,一旦这部分工作,我将更改硬编码的引脚):

public string[] AuthenticationMethods
{
    get { return new string[] { "https://schemas.microsoft.com/ws/2012/12/authmethod/otp" }; }
}

但是当我在我的AD FS中部署它时,当我正确登录时会出现此错误: The Authentication provider did not return an authentication method claim

有人知道出了什么问题吗?

1 个答案:

答案 0 :(得分:0)

我知道了。 schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod声明的URI应使用http。不是https。

您应该在行下方更改

if (pin == "12345")
        {
            System.Security.Claims.Claim claim = new System.Security.Claims.Claim("https://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod", "https://schemas.microsoft.com/ws/2012/12/authmethod/otp");
            claims = new System.Security.Claims.Claim[] { claim };
        }

if (pin == "12345")
        {
            System.Security.Claims.Claim claim = new System.Security.Claims.Claim("http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod", "https://schemas.microsoft.com/ws/2012/12/authmethod/otp");
            claims = new System.Security.Claims.Claim[] { claim };
        }

然后它将起作用。

当我从https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/development/ad-fs-build-custom-auth-method复制示例适配器代码时,我犯了同样的错误

我已在github上提交了https://github.com/MicrosoftDocs/windowsserverdocs/pull/4165更正,应尽快提交。