首页 > 解决方案 > 设计 Saml Authenticatable Gem 错误 - 不支持带有 AuthnContexts 的 AuthnRequest

问题描述

我正在使用devise_saml_authenticable gem 使 Ruby on Rails 应用程序充当服务提供者 (SP)以允许用户使用 SAML SSO 进行身份验证。

Idp是一个 Shibboleth 解决方案,用作urn:oasis:names:tc:SAML:2.0:ac:classes:Password身份验证上下文。

但是,我遇到以下错误:

<Status>
  <StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Responder">
    <StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:RequestUnsupported" />
     </StatusCode>
     <StatusMessage> The AuthnRequest with AuthnContexts is not supported! 
     </StatusMessage>
</Status>

我尝试了各种authn_context可能的组合,但似乎没有任何效果。

如果您可以提供任何见解来解决错误,那将非常有帮助。

谢谢!

标签: ruby-on-railssingle-sign-onsaml-2.0shibboleth

解决方案


这是来自 IdP 的响应程序代码,它们当前配置为支持服务提供商在 SAML AuthnRequest 中指定 AuthnContext 参数。

你在文件中settings.authn_context = ""指定了吗?config/initializers/devise.rb还是您指定urn:oasis:names:tc:SAML:2.0:ac:classes:Password.

说 Shibboleth 使用 AuthnContext 是一种严重的夸大其词。Shibboleth 支持许多上下文类,包括用于多因素身份验证等自定义定义的类。urn:oasis:names:tc:SAML:2.0:ac:classes:Password只是 Shibboleth 支持的众多功能之一。IdP 管理员启用了哪些 Authn 流是另一回事。也许这是他们配置的唯一流程,因此是默认流程。

我会尝试发送带有空 AuthnContext 的 AuthnRequest,因为看起来这个特定的 IdP 已配置为禁用 SP 指定它的能力。

在 Shib IdP 3+ 中,这可以通过p:disallowedFeatures-ref="SAML2.SSO.FEATURE_AUTHNCONTEXT"为您的 SP 指定默认依赖方或特定的 RelyingPartyOverride 来完成。您可能会询问 IdP 管理员并询问他们是否在SAML2.SSObean 上指定了该属性?


推荐阅读