- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在评估 Kentor auth services (它的 OWIN 版本)使用 SAML 对用户进行身份验证。现在我想向该服务传递额外的声明。结合那里的示例,我能够将请求发送到服务并对其进行调试。
我做了一个自定义的 claimsAuthenticationManager,在那里我可以看到额外的声明到达了 auth 服务。但后来(在 Kendor 示例中,有一个 View home/index 列出了所有声明)此声明不再可用。有谁知道我做错了什么?
非常感谢!
最佳答案
将 AuthServices(或任何外部登录)与 ASP.NET Identity 一起使用时,传入的声明仅用于在数据库中查找 ASP.NET Identity 用户。然后完全丢弃传入的用户,并加载和使用来自 ASP.NET Identity 的用户
在默认的 MVC5 模板中,从外部身份到 ASP.NET 身份的切换是在 AccountController.ExternalLoginCallback()
中完成的。要保留传入的信息,您必须调整此方法。有两种选择。
ExternalLoginCallback()
// Sign in the user with this external login provider if the user already has a login
var user = await UserManager.FindAsync(loginInfo.Login);
if (user != null)
{
// Update user with info from external identity and save.
user.GivenName = loginInfo.ExternalIdentity.FindFirst(ClaimTypes.GivenName).Value;
await UserManager.UpdateAsync(user);
await SignInAsync(user, isPersistent: false);
return RedirectToLocal(returnUrl);
}
将 SignInAsync()
的内容复制到您的 ExternalLoginCallback()
方法。将对 user.GenerateUserIdentityAsync() 的调用提取到单独的行中,然后。在调用之前添加声明
SignInAsync()`
// Sign in the user with this external login provider if the user already has a login
var user = await UserManager.FindAsync(loginInfo.Login);
if (user != null)
{
AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
var identity = await user.GenerateUserIdentityAsync(UserManager);
identity.AddClaim(loginInfo.ExternalIdentity.FindFirst(ClaimTypes.GivenName));
AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent },
identity);
return RedirectToLocal(returnUrl);
}
也可以use external login without ASP.NET Identity .如果您只使用来自 Idp 的身份而不使用其他登录方法,则可能更容易使用。
关于c# - Kentor Auth 服务 - 附加声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27036323/
我们需要启用 SAML SSO 登录到我的应用程序。我的应用程序是 Angular JS + Asp.Net Web API 解决方案。我的应用程序已经使用 Owin Bearer Authentic
好吧,首先让我说,问这些问题我真的觉得很愚蠢,因为我认为我对事情有很好的理解,但我似乎无法理解 Kentor 授权 MVC 模型的情况。例如,在 Web.config 文件中,他们指定了如下形式的身份
有没有办法使用 log4net 作为 Kentor Authservices Logger?文档指出“将 ILoggerAdapter 连接到 SPOptions.Logger。如果您使用 OWIN
我使用 Kentor.AuthService.Idp 项目作为起点。 我尝试单点登录的启用 SAML 的服务提供商要求元数据文件包含以下属性: 登录 ID、合作伙伴 ID、平台、用户电子邮件 如何将这
我在基于 WebForms 的应用程序中使用 Kentor HttpModule。我需要获取通过登录声明的其他信息。我不确定,但我认为 Kentor 仅解析 attributeID="userId",
我正在评估 Kentor auth services (它的 OWIN 版本)使用 SAML 对用户进行身份验证。现在我想向该服务传递额外的声明。结合那里的示例,我能够将请求发送到服务并对其进行调试。
我有一个 Web 表单应用程序,我正在尝试使用 SAML 2/Kentor/Owin 对 Azure AD 进行身份验证。我认为我已经配置好了,但是当我的登录页面发出以下命令时,我没有被重定向到登录页
我正在使用 Kentor.AuthServices 实现 SAML/SSO 身份验证的服务提供商概念验证。该用例是一种信息亭式应用程序,许多不同的用户在注册我们的服务时可能会相继进行身份验证。 我遇到
我有一个 Web 表单应用程序,我正在尝试使用 SAML 2/Kentor/Owin 对 Azure AD 进行身份验证。我认为我已经配置好了,但是当我的登录页面发出以下命令时,我没有被重定向到登录页
我正在尝试在我的应用程序中实现 IDP (SAML2) 服务器。鉴于我的应用程序具有所需的所有数据,我不希望我的任何合作伙伴要求我们的客户在他们这边注册。 我对 SAML2 协议(protocol)不
嗨,我正在使用 kentor 身份验证服务(Kentor 身份验证服务是一个库,它将 SAML2P 支持添加到 ASP.NET 和 IIS 网站,允许该网站充当 SAML2 服务提供商 (SP))。现
我正在尝试使用 Kentor 库的 SampleOwinApplication 进行 Saml 2 身份验证。我正在尝试通过转到 http://localhost:57294/AuthServices
使用 IdentityServer3、Kentor.AuthServices 0.19(带有 OWIN 中间件)和标准 MVC 4 WebApi 2 应用程序,我们按照 https://github.
我是一名优秀的程序员,十分优秀!