问题标签 [kentor-authservices]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
413 浏览

saml-2.0 - 使用 Kentor AuthServices 创建 AttributeStatement 和 AuthnStatement 节点

Saml2 的新手,我想使用 Kentor AuthServices .net 库生成 Saml2 响应,我检查了输出 xml,但找不到任何“AttributeStatement”或“AuthnStatement”节点。有谁知道我该如何在图书馆处理它们?干杯H

0 投票
2 回答
1638 浏览

asp.net - 如何使用 Kentor.AuthServices 在 .NET 中为 SSO(单点登录)添加自定义属性

我目前正在使用名为 Kentor.AuthServices 的 SAML2 的 .NET 4.5 实现(参见 github 上的项目)。我正在尝试从我的网站 [MySite] 转到 [BenefitsSiteForSingleSignon]。

我希望发送超过 2 个属性,1 个称为语言,可以是 en-us、en-ca 或 fr-ca,1 个称为 employee_number,它将是一个 6 位数字。

但是,我被困在这一点上,我已经修改了应用程序的 MVC 实现中的 web.config(使用来自 github 的 SampleApplicationMVC),我可以让它向提供者 [BenefitsSiteForSingleSignon] 发送 SAML 请求(对不起,如果我使用不正确的 SAML 术语),但我被困在如何填写员工编号字段和语言字段的问题上。

我已经按照说明修改了 web.config 文件,如下所示,如果有人对此帮助有经验,将不胜感激。

总之,我需要使用 Kentor.AuthServices for .NET 从我的公司网站访问并单点登录到另一个正在提取 SAML2 请求的外部网站。我需要提供字段语言和员工编号,发行人 ID 是 [MySite]。谢谢!

-Web.Config 开始-

0 投票
1 回答
2402 浏览

c# - Kentor Auth Services - 附加索赔

我正在评估Kentor 身份验证服务(它的 OWIN 版本)以使用 SAML 对用户进行身份验证。现在我想向服务传递一个额外的声明。连同那里的示例,我能够将请求发送到服务并对其进行调试。

我做了一个自定义的 claimAuthenticationManager ,在那里我可以看到附加的声明到达 auth 服务。但后来(在 Kendor 示例中,有一个视图主页/索引列出了所有声明)此声明不再可用。有谁知道我做错了什么?

非常感谢!

0 投票
1 回答
2816 浏览

saml-2.0 - IdP 使用 ThinkTecture IdentityServer v3 发起登录

概括

在 SAML 中有一个 IdP 发起登录的概念,这意味着识别方 (IdP) 可以向依赖方(RP / 消费应用程序)发送一个未经请求的令牌,并且用户无需调用 IdP 就可以登录. 我有一个需要这样做的场景,但我希望 ThinkTecture Identity Server v3 位于中间,因为我将在那里处理我的正常身份验证(如非 SAML 日常内容)。由于我无法控制的原因,我无法呼叫 SAML IdP。我想做的是:

IdP 通过身份服务器发起 SSO

我花了相当多的时间来研究这个,我还研究了关于从第三方启动登录的规范,但是如果我理解正确的话,它仍然从第三方将用户引导到 RP 开始,然后将登录请求发送到 IdP(这将是 ThinkTecture 身份服务器),这并不是我真正需要的。

总之,我不认为 OpenID Connect 具有与 SAML 的 IdP 发起的 SSO 等效的功能。这是正确的还是我无法弄清楚还是 ThinkTecture IdentityServer 不支持它?

更多细节

  • 我已成功使用KentorIT 的 AuthServices OWIN 中间件将 IdP 发起的 SAML SSO 直接实施到网站中,根本不使用 IdSrv。
  • 我还将 Kentor 的 OWIN 中间件与 IdSrv 集成,以便我的网站重定向到 IdSrv,然后重定向到我登录的 SAML 服务器,返回到 IdSrv,然后转换 SAML 令牌并将 OpenID 身份令牌发送回我的网站.
  • 为了好玩,我还使用了 Kentor 的库来创建一个用于解压 SAML 令牌的 MVC 控制器,因此如果我愿意,我可以使用它进行一些手动身份验证。

这一切都非常漂亮,非常感谢 ThinkTecture 和 KentorIT。唉,这一切仍然从我的网站开始,并以重定向到 SAML 服务器结束,由于非技术原因,在我的场景中我无法做到这一点。

替代解决方案

在这种情况下,我当然可以完全放弃 IdSrv,但我有理由将 IdSrv 放在中间并让我的所有身份验证都通过它。所以我现在的想法是做这个流程:

  1. SAML 服务器将 SAML 令牌发送到我网站上的特定 URL。
  2. 我的网站将按原样将该令牌重新发布到身份服务器。Identity Server 已经安装了 KentorIT OWIN 中间件,因此这将简单地将用户登录到 IdSrv,这意味着 IdSrv 设置了一个身份验证 cookie。
  3. IdSrv 会简单地重定向回我网站上的另一个 URL,并且不包含任何令牌。到目前为止,这实际上与 IdSrv 无关。
  4. 我的网站现在向 IdSrv 发出身份验证请求
  5. 因为用户已经登录到 IdSrv,IdSrv 将立即响应并使用身份令牌将用户重定向回我的网站。 替代解决方案 这是很多重定向,但它应该可以工作。

在我开始实施它之前,谁能告诉我这是否是正确的方法,还是我错过了一些非常明显的东西?

编辑 1

看来这个想法也行不通。基本上我需要做的是使用 IdP 发起的 SAML SSO 对Identity Server进行身份验证,然后重定向到 RP 并让 RP 通过身份验证请求重定向到 Identity Server。但是,据我所知,除了作为 RP 请求的一部分之外,没有办法让 Identity Server 登录。换句话说,即使我的 SAML 中间件很乐意接受未经请求的令牌,IdSrv 也会忽略 SAML 中间件的登录请求(我认为这很公平)。

因此,我认为另一种解决方案是编写一个控制器,该控制器可以验证 SAML 令牌并在同一服务器上运行的代码中直接调用 IdSrv ,并告诉它使用我手动构建的主体登录用户。

(新)问题是,Identity Server 是否公开了一种机制让我在代码中登录用户,以便 Identity Server 为用户设置适当的 cookie

0 投票
1 回答
1915 浏览

c# - 如何使用 Kentor AuthService 获取额外的断言属性

我在基于 WebForms 的应用程序中使用 Kentor HttpModule。我需要获取使用登录声明的其他信息。我不确定,但我认为 Kentor 只解析 attributeID="userId",我需要获取更多属性。

我是否需要分叉和修改 Kentor 以便在我的应用程序中使用这些值,或者它们存储在某个地方。

我在 Saml2Response 中看到从 AllAssertionElementNodes 方法返回的 xmlElements 集合,但我不知道如何在 app.xml 中访问它们。

要访问 ID,我正在使用此扩展方法:

还有这个:

有什么建议吗?

更新

我相信这是一个适当的解决方案。在AcsCommandProcessResponse方法中,我们有一个samlResponse InnerXML,从那里我们可以解析想要的数据、创建额外的声明或其他任何东西,所以现在我有了一个解决方案(解决方法可能是我的问题)。还有其他更优雅的解决方案吗?

0 投票
1 回答
520 浏览

.net - Kentor.AuthServices 配置指纹验证

如何配置Kentor.AuthServices以使用 WIF 的颁发者注册表?具体来说,要根据指纹进行检查,如下例所示:

我尝试了这个(<identityProviders>在发布之前删除了除元素之外的所有内容):

但这给了我“缺少 Idp http://some.domain/adfs/services/trust上的签名证书配置”

有没有办法在 Kentor 中做同样的事情,或者(更好)有没有办法将这个现有的 WIF 配置提供给 Kentor?

0 投票
1 回答
653 浏览

single-sign-on - Kentor AuthService - 读取主题 NameID

如何使用 Kentor AuthService 从 saml2:Subject 响应 XML 节点访问 saml2:NameID?

我在代码中找不到任何处理 XML 部分的东西。也许我错过了一些东西。

我不是在问 Kentor IdP,我看到 NameID 是作为附加声明发送的,它被翻译为属性,我问的是一般情况下,IdP 不必由 Kentor 提供支持,所以我不能依赖我将把这个值作为属性传递。

所以,如果它被处理了,我在这里找不到它: https ://github.com/KentorIT/authservices/tree/master/Kentor.AuthServices

一种选择是我自己解析 XML,但如果已经实现或更好的解决方案,那就太好了。

0 投票
1 回答
596 浏览

c# - KentorAuth 签名请求 XML

KentorAuth 是否支持签名身份验证请求?我没有看到,但我看到了这个方法:

我可以使用此方法生成有效的(正确签名的身份验证请求)吗?

看起来这是一个缺失的部分?

0 投票
1 回答
868 浏览

vb.net - 无法通过 MVC 中的 Kentor.AuthServices.Owin 访问声明或 saml 属性

我正在构建一个连接到基于 Shibboleth 的 SAML IdP 的 .net 4.5 MVC 应用程序,以提供单点登录功能。为此,我使用了 Kentor.AuthServices.Owin 中间件。

有问题的 IdP 服务需要使用加密断言,而最新版本的 Kentor.AuthServices 不支持。相反,我不得不在这里使用它的 Raschmann-fork https://github.com/Raschmann/authservices/tree/78EncryptedAssertion (v0.8.1),然后尝试 ..Raschmann/authservices/tree/Release (v0.10.1)。

(使用 ..Raschmann/authservices/tree/master (v0.12.1) - 或者实际上任何 KentorIT Kentor.AuthServices 构建 - 导致 loginInfo 在 ExternalLoginCallback 中为空。)

使用上述内容,我可以通过 IdP 在应用程序上登录/注册。但是,当调用 ExternalLoginCallback 时,loginInfo.ExternalIdentity 中的 ExternalClaims 或 Claims 对象不包含任何声明。

我已捕获并解密来自 IdP 的 SAML 响应,并确认在我登录后它正在将信息(例如名字、姓氏、DoB 等)发送回我的应用程序。

如何访问正在返回的 SAML 数据?

在 Startup.Auth.vb 中配置身份验证:

AccountController.vb 中的 ExternalLoginCallback:

0 投票
1 回答
493 浏览

saml-2.0 - 如何生成由目的​​地指定的 SAML2Response

我对 SAML 很陌生,在这一点上很困惑。我正在使用 Kentor 生成 Saml2Response,但它看起来不像我的依赖方所期望的那样。他们专门寻找要嵌入到响应中的证书。

我需要生成这个。

我从肯特得到的是:

任何帮助将不胜感激,因为我什至不确定我是否在正确的舞台上。