SAML Request の生成および伝達

    SSO URL のパラメーターに SAML Request を生成して伝達します。

    Request URL

    Developer Console の SAML Apps 登録時に発行される SSO URL を利用します。

    例) https://LINEWORKS 認証システムの URL/saml2/idp/mycompany.com (LINE WORKS から発行された SSO URL)

    • LINE WORKS のセキュリティポリシーにより HTTPS(443) 利用を推奨します。
    • LINE WORKS から発行された SSO URL に SAML Request と RelayState を渡します。

    HTTP Method

    GET または POST

    参考

    • GET と POST を転送時の SAML Request のエンコード方式がそれぞれ異なります。下記 Request 項目を参照。

    Request

    パラメーター タイプ 必須 説明
    SAMLRequest String Y SAML 2.0 Request 詳細による文字列。
    - GET で渡す場合: Deflate + Base64 でエンコード
    - POST で渡す場合: Base64 でエンコード
    RelayState String N 認証失敗時の再試行のための URL。値が設定された場合、Requrest で受け取った値をそのまま Response で返却します。

    SAML Request 明細

     <?xml version="1.0" encoding="UTF-8"?>
     <saml2p:AuthnRequest
         xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol"
         AssertionConsumerServiceURL="{LINE WORKS に登録した ACS URL}"
         ID="{ID (ランダム英数字)}"
         IssueInstant="{SAML Request 生成日時}"
         ProtocolBinding="{Protocol Binding}"
         ProviderName="{Service Provider Name}"
         Version="2.0">
         <saml2:Issuer
             xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">{LINE WORKS に登録した SP Issuer}</saml2:Issuer>
         <saml2p:NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"/>
     </saml2p:AuthnRequest>
    

    SAML Request の各項目は以下の通りです。

    項目 タイプ 必須 説明
    AuthnRequest AssertionConsumerServiceURL String Y 略は ACS URL。SAML Response を受け取る URL。
    Developer Console に登録した ACS URL と同一であること。
    AuthnRequest ID String Y クライアントが発行する ID。SAML Response 生成時に使用。
    AuthnRquest IssueInstant Date(UTC) Y SAML Request 生成日時。
    AuthnRequest ProtocolBinding String Y SAML Response を受け取る状態を指定。下記 "Protocol Binding" 参照。
    AutnnRequest ProviderName String N クライアント名。
    Issuer String Y Developer Console に登録した SP Issuer (Entity Id) を使用。
    NameIDPolicy Format String Y LINE WORKS では "UNSPECIFIED" で固定して使用。

    Protocol Binding

    項目 説明
    urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST SAML Response を Base64 でエンコードして POST で受け取ります。
    その他 SAML Response を Deflate + Base64 でエンコードして GET で受け取ります。

    SAML Request Example

    <?xml version="1.0" encoding="UTF-8"?>
     <saml2p:AuthnRequest
         xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol"
         AssertionConsumerServiceURL="https://example.com/acs/vendor.com"
         ID="fiokocckbjonklcjiepfejmoehpebebmholeoibp"
         IssueInstant="2018-02-25T07:42:35Z"
         ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
         ProviderName="example.com"
         Version="2.0">
         <saml2:Issuer
             xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">SPIssuer</saml2:Issuer>
         <saml2p:NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"/>
     </saml2p:AuthnRequest>