5

Spring Security SAMLは、SAML認証リクエスト(ProtocolBinding属性)でアーティファクトバインディングをリクエストすることを要求します。

<saml2p:AuthnRequest xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol"
                 AssertionConsumerServiceURL="http://sp.com/saml/SSO/alias/defaultAlias"
                 Destination="https://idp.com/idp"
                 ForceAuthn="false"
                 ID="a4acj06d42fdc0d3494h859g3f7005c"
                 IsPassive="false"
                 IssueInstant="2012-12-05T17:07:18.271Z"
                 ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact"
                 Version="2.0"
                 >

代わりにPOSTバインディングを構成するにはどうすればよいですか?答えてくれてありがとう!

-アンドレアス

4

2 に答える 2

7

nobby と Sanjeev に感謝します。最近、これを同様のケースに適用したところ、正しい方向に進みました。

Spring Security SAML2 拡張機能を初めて使用したため、WebSSOProfileOptions を適用するには、もう少し掘り下げる必要がありました。org.springframework.security.saml.websso.WebSSOProfileImpl#sendAuthenticationRequest()基本的に、SAML 認証要求で HTTP-POST バインディングを取得するには、メソッドに渡されるプロファイル オプションが必要です。

Spring RC2 サンプル プロジェクトの構成と非常によく似た構成の場合、これはWebSSOProfileOptions、Sanjeev のソリューションで説明されているように Bean をプロパティに渡すsamlEntryPoint.defaultProfileOptions(またはそこにバインディング プロパティを追加する) ことを意味していました。

問題は、これにより、AuthnRequest がバインディング プロパティを設定どおりに取得できなかったことです。私たちの場合、SAML メタデータはisDefault=trueHTTP-Artifact bound で指定されていましたAssertionConsumerService。また、Spring Security SAML2 ライブラリの RC2 バージョンでは、これがorg.springframework.security.saml.metadata.MetadataGenerator.

assertionConsumerIndexこれは、MetadataGeneratorのプロパティを設定することでオーバーライドできます。この場合、HTTP Post アサーション コンシューマはインデックス 1 で設定されます。

<bean id="metadataGeneratorFilter" class="org.springframework.security.saml.metadata.MetadataGeneratorFilter">
   <constructor-arg>
      <bean class="org.springframework.security.saml.metadata.MetadataGenerator">
         <property name="assertionConsumerIndex" value="1" /><!-- 1=HTTP-POST -->
      </bean>
   </constructor-arg>
</bean>
于 2013-03-26T00:52:24.687 に答える
2

securityContext.xmlsp-initiated バインディングで設定できます。以下の例では、HTTP-POST を使用しました

 <bean class="org.springframework.security.saml.websso.WebSSOProfileOptions">
                <property name="includeScoping" value="false"/>
                <property name="binding" value="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"/>
            </bean>

org.opensaml.common.xml.SAMLConstantsバインディングの値は、クラスで見つけることができます。

于 2013-01-04T11:15:09.763 に答える