我创建了ADFS 3.0 MFA适配器以提供第二因素身份验证。 在IAuthenticationAdapterMetadata.AuthenticationMethods中,我指定了一个Auth方法(在网上找到了一些例子)。
public string[] AuthenticationMethods
{
get { return new string[] { "http://schemas.microsoft.com/ws/2012/12/authmethod/otp" }; }
}
我理解当我的MFA适配器成功验证它需要返回时 注册的Auth方法:
public IAdapterPresentation TryEndAuthentication(IAuthenticationContext context, IProofData proofData, HttpListenerRequest request, out Claim[] claims){
...
if (status.AuthSuccess){
System.Security.Claims.Claim claim = new System.Security.Claims.Claim("http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod", "http://schemas.microsoft.com/ws/2012/12/authmethod/otp");
claims = new System.Security.Claims.Claim[] { claim };
return null;
}
}
我正在做这件事。如果我的ADFS服务器上没有后端应用程序(如Office 365),这样可以正常工作。最低限度的消息显示用户已登录。
我在使用后端应用程序(Office 365)设置的服务器上安装了我的ADFS插件。 当用户尝试登录时(通过Outlook门户也称为依赖方启动登录),我的插件会被调用第二个因素。如上面关于成功验证第二因素所解释的那样,插件返回已注册的AuthMethod。 这里的预期行为是用户成功登录App(O365)基本上App登陆页面出现。但相反,我看到用户登出并返回Portal登录屏幕。
所以我的问题是:我做错了什么?我似乎在插件中做得对。它与我们在AuthenticationMethods中定义的内容有关。 我可以为AuthenticationMethods定义任何自定义URI,还是有标准的? 我需要配置插件外的其他声明或依赖方设置吗? 除了在线示例和练习创建插件之外,我无法找到详细解释这些内容的具体文档。