5

spring-saml実装を使用しています。クラス WebSSOProfileConsumerImpl で、SAML 応答のアサーションでnameId をチェックする次のコード行を見つけることができました。

NameID nameID;
if (subject.getEncryptedID() != null) {
    Assert.notNull(context.getLocalDecrypter(), "Can't decrypt NameID, no decrypter is set in the context");
    nameID = (NameID) context.getLocalDecrypter().decrypt(subject.getEncryptedID());
} else {
    nameID = subject.getNameID();
}

コードに基づいて、nameId が件名の一部であることは明らかです。しかし、私が使用しているものを含む IDP のほとんどは、 nameId がsubject/attributeの一部である可能性があると述べています。SimpleSAMLPHP と同じように、サブジェクトに nameId を受け入れる実装がいくつかあるようです

私が受け取っている件名は次のとおりで、nameId が含まれていません。

<saml2:Subject>
  <saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">  
    <saml2:SubjectConfirmationData Address="91.X.X.X" InResponseTo="XXXX" NotOnOrAfter="2014-10-10T10:34:26.619Z" Recipient="http://localhost:8080/XXXX/saml/SSO"/>
  </saml2:SubjectConfirmation>
</saml2:Subject>

ただし、属性値としてnameIdを持つ属性があります。件名の代わりにこれを使用できないのはなぜですか。

<saml2:Attribute FriendlyName="testID" Name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
  <saml2:AttributeValue>
      <saml2:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" NameQualifier="https://XXXX/idp/shibboleth" SPNameQualifier="urn:XX:XX:XX">XXXXXXXXXXXXXXXXX=
      </saml2:NameID>
  </saml2:AttributeValue>
</saml2:Attribute>

spring-saml実装でnameIdがサブジェクトのみの一部である理由を誰でも説明できますか。

@vschafer securityContext.xmlをカスタマイズして、 subjectからではなく特定の属性の一部であるnameIdを選択する方法はありますか?

4

2 に答える 2

2

現在、Spring SAMLNameIDが存在する必要があります。これを変更するにはコードの変更が必要であり、現在、構成だけでは実行できません。Spring SAML Jiraでこれを変更するための機能リクエストを自由に開いてください。

于 2014-10-13T21:06:38.207 に答える