无法使用Microsoft.Owin.Security.WsFederation和ADFS 3登录



在一个评估各种不同身份提供者的项目中,我有一个代码库,它已经使用WsFederation-Owin包成功地通过了Azure AAD和Okta的身份验证。评估列表上的下一个是内部托管的ADFS。正如前两个一样:

我进入了idp登录页面,

登录,

使用POST将get发送回主机(在本地运行),POST中的表单变量包括wtresult形式变量中的RequestSecurityTokenResponse。

已发出外部登录cookie

我的ExternalLoginCallback函数称为

这里不同的是:

        var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
        if (loginInfo == null)
        {
            return RedirectToAction("Login");
        }

loginInfo为null。以下是我尚未破译的潜在线索。如果我不设置

  app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);

在我的启动过程中,我在User.identity中获得了一个经过身份验证的声明标识。但是,该标识中没有用户名、名称或角色声明。如果比较从Okta和ADFS返回的令牌,则存在两个差异。两者都有upn、名称和角色声明,但ADFS声明是SAML 1.0断言,其中Okta是SAML 2.0。另一个区别是ADFS签名方法是sha265,其中Okta是sha1。

这些差异会造成我的问题吗?配置ADFS的人不知道指定这些东西的方法,WsFederation中间件是否可以配置为请求特定的东西或使用ADFS正在使用的东西?

已经找到了答案。需要将saml-nameid声明类型添加到ADFS中,以便OWIN中间件将其作为有效的外部登录。感谢这篇指出细节的文章。

http://darb.io/blog/2014/06/30/WebAPI-and-ADFS-as-external-login-provider/

相关内容

  • 没有找到相关文章

最新更新