问题标签 [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.
saml-2.0 - 使用 Kentor/Sustainsys AuthServices SAML2 进行范围界定
有没有人使用Kentor/Sustainsys
AuthServices 进行范围界定?
发布历史https://github.com/Sustainsys/Saml2/releases指出版本 v0.18.0 支持范围,确实似乎有一些范围类,但它们似乎没有被使用。
具体来说,Saml2AuthenticationRequest
实例的创建不包括任何地方的范围。
我在这里错过了什么吗?有没有办法通过 web.config 中的配置来实现这一点,或者代码还没有准备好进行范围界定?
我正在尝试使用 AuthServices MVC 包添加SAML2
到现有MVC
项目以SSO
支持SP
.
javascript - Kentor SAML2 身份验证问题
好的,首先让我说我真的觉得问这些问题很愚蠢,因为我认为我对事物有很好的理解,但我似乎无法理解 Kentor 授权 MVC 模型发生了什么。例如,在 Web.config 文件中,他们指定了表单身份验证,如下所示:
但我在任何地方都找不到那个终点。然后在 HomeController.cs 文件中,他们有一个这样指定的端点:
但是当我通过调试器运行它时,它永远不会被击中。很抱歉提出这样的开放式问题,我知道人们在 Kentor 图书馆投入了大量时间,非常感谢。MVC 示例是否完整,或者其中一些只是您如何做事的示例,但并未真正用于示例项目中?
编辑:我找到了丢失的终点。作为 MVC 的新手,我没有意识到一个基本事实 --> 引用的 DLL 可以添加控制器端点。我认为所有的端点都必须在我的代码中。(让鞭笞开始)。
我现在意识到的是,虽然我在 VS 中被认为是一个 MVC 项目,但我实际上是一个拥有 Web API 的客户端。所以我的问题是我的项目似乎找不到授权/登录端点。我假设这意味着我必须使用 OWIN 模型,我什至不知道 OWIN 是什么,所以这应该是一种享受。
我的下一个问题是无论如何都要使用带有 Web API 的 MVC 模型?如果是这样,我如何让我的客户识别 Kentor 库中的登录端点?
编辑:所以我退后一步,使用 HTTP 模块,而不是潜入 OWIN。我知道我出轨了。一个重要的事实是,如果您使用此模块并继续以未经授权的方式恢复您的身份,请确保此部分在您的 Web.config 中:
我不记得说明中有很多关于此的内容,但对我来说,它允许填充我的 User.Identity 对象。现在我开始尝试找出用户ID(它仍然没有被填充,但在声明中)。希望这个线程在未来对某人有所帮助。
kentor-authservices - Kentor 在 Acs ReturnUrl 后识别身份提供者
我定义了多个身份提供程序以与我的 AuthServices 一起使用,他们每个人都向我的 AssertionService 发送一个 SamlResponse,因为应该然后重定向到我的 RedirectUrl,如 Sustainsys.Saml2.StubIdp 示例中定义的“ExternalLoginCallback”。我无法知道身份提供者的女巫返回了 externalIdentity,我必须检查当前用户是否属于此 idp。
我希望我不必强迫他们发送带有 Idp Id 或类似内容的特殊声明。
是否存在将 Acs 之间的 entityId 传递给我的回调操作的方法?
谢谢
asp.net-mvc - 清除 cookie 后,带有 Okta 的 MVC 5 Kentor Auth 不起作用
我已经按照本页https://github.com/Sustainsys/Saml2/blob/master/docs/OwinMiddleware.md中提到的说明实现了对 Okta 的 SAML 身份验证支持。
第一次有人单击 Okta 中打开我的应用程序的磁贴时,身份验证不起作用。具体来说,来自我的 ExternalLoginCallback 函数的 AuthenticationManager.GetExternalLoginInfoAsync() 调用返回 null。
当用户第二次单击磁贴时,一切都按预期工作。
我可以通过从浏览器中为我的 Web 应用程序清除所有 cookie,然后尝试从 Okta 登录来始终重现该问题。第一次它总是失败,第二次它工作。
到目前为止,我已将其缩小到 1 个 cookie:ASP.NET_SessionId。如果我删除此 cookie 并尝试登录它会失败。
我的 ExternalLoginCallback 方法看起来很标准:
我在这里想念什么?
注意: 我尝试了使用 Kentor Auth Services 附带的 SampleOwinApplication 应用程序清除 cookie 的相同步骤。这个应用程序适用于所有情况(即使在清除 cookie 之后)
saml - Shibboleth->Saml2 元数据
所以我们的站点需要通过外部 Shibboleth 系统进行身份验证。他们说他们支持 SAML2,所以我将 Saml2 nuget 添加到 IdentityServer3,并将其指向他们的站点。似乎有效,但在他们的最后它说我们不允许访问它。
他们需要添加一些元数据路径,这样我们才能被认为是有效的,知道那会是什么吗?他们说https://your.sp-host.com/Shibboleth.sso/Metadata但我们内部并没有使用 Shibboleth ,所以很明显,我们这边的路线没有意义。
saml-2.0 - 如何在身份服务器 3 中为 Sustainsys 外部提供商设置 acr 值
我Idsvr3
在 SQL 中有本地用户帐户。此外,我还使用https://github.com/Sustainsys/Saml2配置了支持 SAML2 的外部身份提供程序,我遵循了此处的示例
现在,当用户访问客户端应用程序时,他会被重定向到登录页面,该页面显示用于本地登录的用户 ID/密码文本框,还有一个用于重定向到外部提供商的按钮。
我想改变这种行为。我希望用户根据某些条件直接转到外部登录。我读过我可以将所需的登录提供程序传递给acr_values
IdSvr3 将直接转到外部提供程序。
这是我注册外部提供商的方式IdSvr3
(注意,为简洁起见,删除了一些代码)
这是客户端应用程序启动
但是身份服务器抛出错误External login error: provider requested saml2 is not a configured external provider
提供者的有效名称Sustainsys/Saml2
是什么,它在哪里配置?
asp.net-identity - 如何在 SAML2 或 WS-Federation 中请求声明?
我有当前配置为使用IdP
OpenID Connect 协议的 ASP.NET MVC 应用程序(带有 OWIN)。在 OpenId Connect 中,我可以使用 Scope 值作为 singin 请求的一部分来请求声明。例如。
作为回报,将IdP
这些声明包含在令牌中,应用程序 (SP) 可以访问它们。
IdP
现在我想在我的应用程序中再配置两个,一个SAML2
用户和另一个用户WS-Federation
。对于 SAML2 Idp,我使用的是SustainSys库,对于 WS-Federation,我使用的是Microsoft.Owin.Security.WsFederation库。
我认为scopes
仅对 OpenID Connect 协议有效,对于其他 2 个协议,我如何请求我的应用程序需要的这些声明?
salesforce - 使用签名中包含的密钥正确验证了签名,但该密钥不受信任
我正在尝试将 SAML2 IdP 配置Salesforce
为 IdentityServer3 中的外部提供程序。我正在使用SustainSys/Saml2库。因此,出于测试目的,我下载了SampleIdentityServer3。并配置 SAML2 IdP,如下所示
请注意,如果我没有设置MinIncomingSigningAlgorithm
为 sh1,那么 SustainSys 库会引发错误。
Sustainsys.Saml2.Exceptions.InvalidSignatureException:签名算法http://www.w3.org/2000/09/xmldsig#rsa-sha1弱于最低接受 http://www.w3.org/2001/04/ xmldsig-more#rsa-sha256。如果要允许此签名算法,请使用 minIncomingSigningAlgorithm 配置属性。
所以我设置为MinIncomingSigningAlgorithm
摆脱"http://www.w3.org/2000/09/xmldsig#rsa-sha1"
错误。
但后来我得到不同的错误
Sustainsys.Saml2.Exceptions.InvalidSignatureException:使用签名中包含的密钥正确验证了签名,但该密钥不受信任。
根据问题#493 #735,元数据中的证书必须与 SAML2 响应中的证书匹配。
在元数据中,证书是(注意开始和结束值)
但在 SAML2 响应中(由 SustainSys 库记录的响应)
查看X509Certificate
元数据和 SAML2 响应中的值,它们不匹配。
问题SAML2 响应中
的值是否应该与元数据中的值匹配?如果是,为什么 SustainSys 库不能始终使用SAML2 响应中的值?X509Certificate
X509Certificate
X509Certificate
更新
只是为了看看匹配值是否有效,我将 SAML2 响应中的证书值保存到单独的.cer
文件中。然后在 KeyInfoSerializer.cs 文件中我更新ReadX509Certificate
了方法(这是从元数据加载证书的方法)
但是,它仍然会引发错误The signature verified correctly with the key contained in the signature, but that key is not trusted.
asp.net - 带有滑动过期的 ASP.Net 外部 Cookie 显示为会话 cookie
我正在尝试在 Asp.Net 中配置一个滑动过期 cookie。我希望 cookie 出现在 Google Chrome 开发人员工具 cookie 管理器中,并在身份验证后 5 分钟到期,但它显示为“会话”,并且在单击退出按钮之前永不过期。如果浏览器关闭,它确实会消失。
以下是目前的代码。该网站使用基于 Saml 的单点登录身份验证和Kentor.AuthServices
nuget 包(现在称为SustainSys.Saml2
,我们落后于版本)。
OnResponseSignIn
最近根据此 MSDN 答案添加了
该块: https ://forums.asp.net/t/2121970.aspx?OWIN+Authentication+ExpireTimeSpan+not+working
我希望 cookie 在 30 分钟的非活动时间内过期。上面的代码设置为 5 以便于测试。
identityserver3 - 提供的证书对加密/解密无效
我正在使用 IdentityServer3 进行身份验证。IdentityServer3 正在使用根据本文使用 makecert ar 创建的签名证书(用于签署令牌的证书)。
此仅签名证书与 identityserver3 一起工作正常
现在我正在尝试使用SustainSys库添加 SAML2 外部提供程序。我将 SPOptions 配置为加载相同的仅签名证书。但是它会
Saml2AuthenticationOptions.SPOptions.ServiceCertificates.Add(LoadCertificateFromWindwosStore())
抛出错误
提供的证书对加密/解密无效。Windows 证书存储中对其私钥的权限可能不足,或者证书本身可能没有正确的用途。如果您只想将其用于签名,请将 Use 属性设置为 Signing (CertificateUse.Signing)。
当我调试库代码时,实际的异常是Bad Key
. 如#412中所述
现在确定为什么这个证书不能与 SustainSys 一起使用,当它与 IdentityServer3 一起使用时?
(请注意,如果我按照@brockallen 文章创建新的 SSL 证书,
然后 SustainSys 库使用 SSL 证书。但不是带有signonly证书)