SAML 2.0
SAML 2.0プロファイル > WebブラウザSSOプロファイル > SP リダイレクト・アーティファクト; IdP リダイレクト・アーティファクト

これは、SAML 2.0 Web Browser SSO Profile（SAMLProf）の複雑な展開であり、サービスプロバイダ (SP) とアイデンティティプロバイダ (IdP) の両方がHTTPアーティファクト・バインディングを使用している。 両方のアーティファクトは、HTTP GET でそれぞれのエンドポイントに配信される。
メッセージの流れは、SPのセキュアなリソースへのリクエストから始まる：
1. SPでターゲット・リソースをリクエスト
プリンシパルは、（HTTPユーザーエージェントを介して）サービスプロバイダにターゲットリソースを要求する：
https://sp.example.com/myresource
サービスプロバイダは、ターゲットリソースに代わって、セキュリティ チェックを実行する。 サービスプロバイダに有効なセキュリティコンテキストがすでに存在する場合は、ステップ2–11をスキップする。
2. IdPのシングルサインオン (SSO) サービスへのリダイレクト
サービスプロバイダは、ユーザーエージェントをアイデンティティプロバイダのシングルサインオン (SSO) サービスにリダイレクトする。 リダイレクトURLには、RelayStateパラメータとSAMLartパラメータが付加される。
3. IdPへのSSOサービスのリクエスト
ユーザ・エージェントは、アイデンティティプロバイダにSSOサービスを要求する。
https://idp.example.org/SAML2/SSO/Artifact?SAMLart=artifact_1&RelayState=token
ここで、tokenは、サービスプロバイダで保持されている状態情報への不透明な参照であり、artifact_1は、SAMLアーティファクトであり、いずれもステップ 2で発行されたものである。
4. SPでアーティファクト・レゾリューション・サービスをリクエスト
SSOサービスは、SAML SOAPメッセージにバインドされた<samlp:ArtifactResolve>要素をサービスプロバイダのアーティファクト解決サービスに送信することで、アーティファクトの参照先を見に行く（dereference）。
<samlp:ArtifactResolve
    xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
    xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
    ID="identifier_1"
    Version="2.0"
    IssueInstant="2004-12-05T09:21:58Z"
    Destination="https://sp.example.com/SAML2/ArtifactResolution">
    <saml:Issuer>https://idp.example.org/SAML2</saml:Issuer>
    <!-- an ArtifactResolve message SHOULD be signed -->
    <ds:Signature
      xmlns:ds="http://www.w3.org/2000/09/xmldsig#">...</ds:Signature>
    <samlp:Artifact>''artifact_1''</samlp:Artifact>
  </samlp:ArtifactResolve>
ここで、<samlp:Artifact>要素の値は、ステップ3で送信されたSAMLアーティファクトである。
5. SAML AuthnRequestで応答
サービスプロバイダのアーティファクト解決サービスは、SAML SOAPメッセージにバインドされた<samlp:ArtifactResponse>要素（<samlp:AuthnRequest>要素を含む）を、アイデンティティプロバイダのSSOサービスに返す：
<samlp:ArtifactResponse
    xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
    ID="identifier_2"
    InResponseTo="identifier_1"
    Version="2.0"
    IssueInstant="2004-12-05T09:21:59Z">
    <!-- an ArtifactResponse message SHOULD be signed -->
    <ds:Signature
      xmlns:ds="http://www.w3.org/2000/09/xmldsig#">...</ds:Signature>
    <samlp:Status>
      <samlp:StatusCode
        Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
    </samlp:Status>
    <samlp:AuthnRequest
      xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
      xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
      ID="identifier_3"
      Version="2.0"
      IssueInstant="2004-12-05T09:21:59Z"
      Destination="https://idp.example.org/SAML2/SSO/Artifact"
      ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact"
      AssertionConsumerServiceURL="https://sp.example.com/SAML2/SSO/Artifact">
      <saml:Issuer>https://sp.example.com/SAML2</saml:Issuer>
      <samlp:NameIDPolicy
        AllowCreate="false"
        Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"/>
    </samlp:AuthnRequest>
  </samlp:ArtifactResponse>
SSOサービスは、<samlp:AuthnRequest>要素を処理し、セキュリティチェックを行う。 ユーザーが有効なセキュリティ・コンテキストを持っていない場合、アイデンティティプロバイダはユーザーを識別する（詳細は省略）。
6. アサーション・コンシューマー・サービスへのリダイレクト
アイデンティティプロバイダの SSO サービスは、ユーザ・エージェントをサービスプロバイダのアサーション・コンシューマ・サービスにリダイレクトする。 以前の RelayState パラメータと新しい SAMLart パラメータがリダイレクト URL に追加される。
7. SPにアサーション・コンシューマー・サービスを要求する
ユーザ・エージェントは、サービスプロバイダにアサーション・コンシューマ・サービスを要求する：
https://sp.example.com/SAML2/SSO/Artifact?SAMLart=artifact_2&RelayState=token
ここで、tokenは、ステップ 3のトークンの値であり、artifact_2は、ステップ 6で発行されたSAMLアーティファクトである。
8. IdP でアーティファクト解決サービスを要求する
アサーション・コンシューマー・サービスは、SAML SOAPメッセージにバインドされた<samlp:ArtifactResolve>要素をアイデンティティプロバイダのアーティファクト解決サービスに送信することにより、アーティファクトを逆参照する：
<samlp:ArtifactResolve
    xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
    xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
    ID="identifier_4"
    Version="2.0"
    IssueInstant="2004-12-05T09:22:04Z"
    Destination="https://idp.example.org/SAML2/ArtifactResolution">
    <saml:Issuer>https://sp.example.com/SAML2</saml:Issuer>
    <!-- an ArtifactResolve message SHOULD be signed -->
    <ds:Signature
      xmlns:ds="http://www.w3.org/2000/09/xmldsig#">...</ds:Signature>
    <samlp:Artifact>''artifact_2''</samlp:Artifact>
  </samlp:ArtifactResolve>
ここで、<samlp:Artifact>要素の値は、ステップ 7で送信されたSAMLアーティファクトである。
9. SAMLアサーションで応答
アイデンティティプロバイダのアーティファクト解決サービスは、サービスプロバイダのアサーション・コンシューマ・サービスに、SAML SOAPメッセージにバインドされた<samlp:ArtifactResponse>要素（<samlp:Response>要素を含む）を返す：
<samlp:ArtifactResponse
    xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
    ID="identifier_5"
    InResponseTo="identifier_4"
    Version="2.0"
    IssueInstant="2004-12-05T09:22:05Z">
    <!-- an ArtifactResponse message SHOULD be signed -->
    <ds:Signature
      xmlns:ds="http://www.w3.org/2000/09/xmldsig#">...</ds:Signature>
    <samlp:Status>
      <samlp:StatusCode
        Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
    </samlp:Status>
    <samlp:Response
      xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
      xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
      ID="identifier_6"
      InResponseTo="identifier_3"
      Version="2.0"
      IssueInstant="2004-12-05T09:22:05Z"
      Destination="https://sp.example.com/SAML2/SSO/Artifact">
      <saml:Issuer>https://idp.example.org/SAML2</saml:Issuer>
      <ds:Signature
        xmlns:ds="http://www.w3.org/2000/09/xmldsig#">...</ds:Signature>
      <samlp:Status>
        <samlp:StatusCode
          Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
      </samlp:Status>
      <saml:Assertion
        xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
        ID="identifier_7"
        Version="2.0"
        IssueInstant="2004-12-05T09:22:05Z">
        <saml:Issuer>https://idp.example.org/SAML2</saml:Issuer>
        <!-- a Subject element is required -->
        <saml:Subject>
          <saml:NameID
            Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">
            user@mail.example.org
          </saml:NameID>
          <saml:SubjectConfirmation
            Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
            <saml:SubjectConfirmationData
              InResponseTo="identifier_3"
              Recipient="https://sp.example.com/SAML2/SSO/Artifact"
              NotOnOrAfter="2004-12-05T09:27:05Z"/>
          </saml:SubjectConfirmation>
        </saml:Subject>
        <saml:Conditions
          NotBefore="2004-12-05T09:17:05Z"
          NotOnOrAfter="2004-12-05T09:27:05Z">
          <saml:AudienceRestriction>
            <saml:Audience>https://sp.example.com/SAML2</saml:Audience>
          </saml:AudienceRestriction>
        </saml:Conditions>
        <saml:AuthnStatement
          AuthnInstant="2004-12-05T09:22:00Z"
          SessionIndex="identifier_7">
          <saml:AuthnContext>
            <saml:AuthnContextClassRef>
              urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
           </saml:AuthnContextClassRef>
          </saml:AuthnContext>
        </saml:AuthnStatement>
      </saml:Assertion>
    </samlp:Response>
  </samlp:ArtifactResponse>
10. ターゲット・リソースへのリダイレクト
アサーション・コンシューマー・サービスは、レスポンスを処理し、サービスプロバイダでセキュリティ・コンテキス トを作成し、ユーザ・エージェントをターゲット・リソースにリダイレクトする。
11. SPでターゲット・リソースを再度要求する
ユーザ・エージェントは、サービスプロバイダでターゲット・リソースを（再度）要求する：
https://sp.example.com/myresource
12. 要求されたリソースで応答する
セキュリティ・コンテキストが存在するので、サービスプロバイダはリソースをユーザエージェントに返す。