2012年4月4日水曜日

SAML 2.0 Session Token Profile 1.0


セッション管理を行う運用において、IdPSP側のセッション情報を管理するケースで使用する。
(Session Tokenのフォーマットを規定しており、Session TokenはSAMLアサーション形式になる)

IdPにおいて、SP向けのSession Tokenを発行して、SPではそのままこのSession Tokenを利用して、セッションを確立する。
このSession Token内の属性ステートメントには、セッションを管理するための情報(セッションIDやセッションの有効時間など)が含まれる。

■SAMLアサーションの例
(太字箇所がセッションに関連する情報)

<saml:Assertion ID="_a75e1c55-01d7-40cc-929f-d627c72ebdfc"
   IssueInstant="2010-11-25T13:16:02Z" Version="2.0"
    xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
    xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
    xmlns:xs=”http://www.w3.org/2001/XMLSchema”
    xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
  <saml:Issuer>sessionauthority.example.com</Issuer>
  <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    <ds:SignedInfo>
      <ds:CanonicalizationMethod
        Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
      <ds:SignatureMethod
        Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256"/>
      <ds:Reference URI="#_a75e1c55-01d7-40cc-929f-d627c72ebdfc">
        <ds:Transforms>
          <ds:Transform
            Algorithm="http://www.w3.org/2000/09/xmldsig#envelopedsignature"/>
          <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
            <InclusiveNamespaces PrefixList="#default saml ds xs xsi"
              xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"/>
          </ds:Transform>
        </ds:Transforms>
        <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
        <ds:DigestValue>Kcl ... </ds:DigestValue>
      </ds:Reference>
    </ds:SignedInfo>
    <ds:SignatureValue> ... </ds:SignatureValue>
    <ds:KeyInfo>
      <ds:KeyName>SessionKey003<ds:KeyName/>
    </ds:KeyInfo>
  </ds:Signature>
  <saml:Subject>
    <saml:NameID NameQualifier="Repository6">John.Smith</NameID>
    <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"
      <saml:SubjectConfirmationData Address="192.168.1.2"
    </saml:SubjectConfirmation>
  </saml:Subject>
  <saml:Conditions NotBefore="2010-11-25T13:16:02Z"
    NotOnOrAfter="2010-11-25T13:20:02Z">
  </saml:Conditions>
  <saml:AuthnStatement AuthnInstant="2010-11-25T13:15:13Z">
    <saml:AuthnContext>
      <saml:AuthnContextClassRef>
          urn:oasis:names:tc:SAML:2.0:ac:classes:Password
      </saml:AuthnContextClassRef>
    </saml:AuthnContext>
  </saml:AuthnStatement>
  <saml:AttributeStatement>
    <saml:Attribute NameFormat=
                 "urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
      Name="urn:oasis:names:tc:SAML:2.0:profiles:session:sessionId"
      xsi:type="xs:string" >
        258673
    </saml:Attribute>
    <saml:Attribute NameFormat=
                 "urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
 Name="urn:oasis:names:tc:SAML:2.0:profiles:session:AuthenticationStrength"
      xsi:type="xs:integer" >
        20
    </saml:Attribute>
    <saml:Attribute NameFormat=
                 "urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
    Name="urn:oasis:names:tc:SAML:2.0:profiles:session:TimeLastActive"
    xsi:type="xs:dateTime" >
        2010-11-25T13:16:02Z
    </saml:Attribute>
    <saml:Attribute NameFormat=
                 "urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
  Name="urn:oasis:names:tc:SAML:2.0:profiles:session:TokenFormatVersion"
      xsi:type="xs:string" >
       1.0
    </saml:Attribute>
  </saml:AttributeStatement>
</saml:Assertion>