SAML Response

IdP は SP である LINE WORKS からの認証要求メッセージを受け取り、SAML Request を検証した後にログインページを表示します。ユーザーがログインに成功すると IdP は SAML Response を作成し LINE WORKS が指定した ACS URL に送信します。

参考

  • SAML 2.0 による SSO 「図 3 LINE WORKS サービスとクライアント間の SAML2.0 による SSO」5~6

HTTP Request {#saml-request-url}

SAML Request に指定されている ACS URL を使用します。

POST https://AuthnRequest-AssertionConsumerServiceURL

注意

  • SAML Request では ProtocolBinding を HTTP-POST に指定しています。必ず POST を使用してください。

Request Example {#saml-request-example}

POST https://auth.worksmobile.com/acs/company.com

注意

  • ACS URL はユーザー環境および LINE WORKS サービスの変更により予告なく変更される可能性があります。
  • 必ず SAML Request に含まれる "AssertionConsumerServiceURL" を使用してください。

Query Parameters {#saml-request-parameter}

ParameterTypeDescription
SAMLResponseString認証要求に対する応答内容
Base64 エンコード
required
RelayStateString認証要求時に LINE WORKS が指定した RelayState 値

SAML Response Body {#saml-request-response-body}

<?xml version="1.0" encoding="UTF-8"?><saml2p:Responsexmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" ID="{IdP 側で発行する ID}"InResponseTo="{SAML Requestに含まれている ID}" IssueInstant="{SAML Response 生成日時}" Version="2.0"><Signature xmlns=\"http://www.w3.org/2000/09/xmldsig#\">          {デジタル署名}</Signature><saml2p:Status><saml2p:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" /></saml2p:Status><saml2:Assertionxmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" ID="{IdP 側で発行する ID}" IssueInstant="{SAML Response 生成日時}" Version="2.0"><saml2:Subject>      <saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">{ログインしたユーザーの User Key}</saml2:NameID>      <saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">        <saml2:SubjectConfirmationData InResponseTo="{SAML Request に含まれている ID}" NotOnOrAfter="{SAML Response 満了日時}" Recipient="{ACS URL}" />      </saml2:SubjectConfirmation>    </saml2:Subject>    <saml2:Conditions NotBefore="{SAML Response 開始日時}" NotOnOrAfter="{SAML Response 満了日時}">      <saml2:AudienceRestriction>        <saml2:Audience>{ACS URL}</saml2:Audience>      </saml2:AudienceRestriction>    </saml2:Conditions>    <saml2:AuthnStatement AuthnInstant="{SAML Response 生成日時}" SessionIndex="{IdP 側で発行するID}"SessionNotOnOrAfter="{LINE WORKS のセッション満了日時}"></saml2:AuthnStatement>  </saml2:Assertion></saml2p:Response>

SAML Response の各項目は下記の通りです。

ParameterTypeDescription
Response IDStringResponse を特定するための一意となる値
IdP が任意に設定
required
Response InresponseToDate(UTC)SAML Request に含まれる ID
required
Response IssueInstantDate(UTC)SAML Response 生成日時
required
SignatureStringデジタル署名
required
Assertion IDStringAssertion を特定するための一意となる値
IdP が任意に設定
Assertion IssueInstantDate(UTC)Assertion 生成日時
Subject NameIDStringログインした LINE WORKS ユーザーの User Key (ExternalKey または LINE WORKS Account)
required
SubjectConfirmationData InResponseToStringSAML Request に含まれる ID
required
SubjectConfirmationData NotOnOrAfterDate(UTC)SAML Response 満了日時
required
SubjectConfirmationData RecipientStringACS URL
required
Conditions NotBeforeDate(UTC)SAML Response 生成日時
required
Conditions NotOnOrAfterDate(UTC)SAML Response 満了日時
required
AudienceStringACS URL
required
AuthnStatement AuthnInstantDate(UTC)SAML Response 生成日時
required
AuthnStatement SessionIndexStringSession を特定するための一意となる値
IdP が任意に設定
required
AuthnStatement SessionNotOnOrAfterDate(UTC)LINE WORKS のログインセッション満了日時

参考

  • LINE WORKS のログインセッション満了日時は SessionNotOnOrAfter の値で指定します。ただし、LINE WORKS サービスのポリシーにより、ユーザーが使用中の場合には自動で延長されることがあります。
  • ユーザーの利用デバイスに合わせて SessionNotOnOrAfter の値をコントロールすることもできます。
  • SessionNotOnOrAfter を設定していない場合、既定のログイン保持期間として、ウェブ ブラウザでは 24 時間、モバイルアプリおよび PC アプリでは 30 日に設定されます。

SAML Response Example {#saml-request-response-body-example}

<?xml version="1.0" encoding="UTF-8"?><saml2p:Response	xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" 	ID="aidalcbpncbpebcnglhhgkkbojkgbplhhhlecbjb" InResponseTo="gbggljimijodibeomaehmnmjniogjebpjckecbdg" IssueInstant="2018-02-14T10:39:05.956Z" Version="2.0">    <Signature xmlns=\"http://www.w3.org/2000/09/xmldsig#\">        ……    </Signature>    <saml2p:Status>        <saml2p:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" />    </saml2p:Status>    <saml2:Assertion        xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" ID="pbfijmklioghpbickikmeanhemnmijnmchhibenb" IssueInstant="2018-02-14T10:39:05.956Z" Version="2.0">        <saml2:Subject>            <saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">admin@company.com</saml2:NameID>            <saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">                <saml2:SubjectConfirmationData InResponseTo="gbggljimijodibeomaehmnmjniogjebpjckecbdg" NotOnOrAfter="2018-02-14T10:44:05.956Z" Recipient="https://auth.worksmobile.com/acs/compay.com" />            </saml2:SubjectConfirmation>        </saml2:Subject>        <saml2:Conditions NotBefore="2018-02-14T10:39:05.956Z" NotOnOrAfter="2018-02-14T10:44:05.956Z">            <saml2:AudienceRestriction>                <saml2:Audience>https://auth.worksmobile.com/acs/company.com</saml2:Audience>            </saml2:AudienceRestriction>        </saml2:Conditions>        <saml2:AuthnStatement AuthnInstant="2018-02-14T10:39:05.956Z" SessionIndex="lepcacjgfnpciekmhhjbeljadfapemdoncmhlkol" SessionNotOnOrAfter="2018-02-15T10:39:05.956Z">        </saml2:AuthnStatement>    </saml2:Assertion></saml2p:Response>

SAML Response 検証のエラーコード {#saml-request-response-error-code}

LINE WORKS 側の SAML Response 検証に関するエラーコードは、以下の通りです。

CodeMessageDescription
510Invalid SAMLResponse.SAMLResponse XML が不正
511Signature validation Failed.署名が不正
512SAMLResponse decoding failed.Base64 デコードに失敗
513SAMLResponse inflate failed.SAMLResponse の Inflate エラー
514Signature is missing.署名されていない
515Invalid SAMLResponse. (StatusCode is not Success)SAMLResponse が不正 (statusCode エラー)
520Invalid NameID. (520)NamedId が不正
530Works login Failed. (530)ログイン失敗
531Invalid User. (531)LINE WORKS ユーザーではない
NamedId (UserKey) が不正
532No authority to use.ログインが制限されたユーザー
534Invalid IDC.ログインした IDC が不正
535Invalid Acs Url.ACS URL が不正
536Certification time is incorrect.認証された時間が不正
537Invalid tenant.SSO が有効になっていないテナント
551Error in IDP API.IdP 側の Login APIでエラーが発生
552SAMLResponse or RelayState is not exist.IdP 側の Login API で必須データが含まれていない
561Unexpected Error. (561)不明なエラー
594Login Fail. (594)ログイン失敗
595Invalid Access. (595)不正なアクセス
596Invalid Access. (596)不正なアクセス
598Login Fail. (598)証明書の照会エラー
599Login Fail. (599)不明なエラー