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
SAML Request に指定されている ACS URL を使用します。
POST https://AuthnRequest-AssertionConsumerServiceURL注意
- SAML Request では ProtocolBinding を HTTP-POST に指定しています。必ず POST を使用してください。
POST https://auth.worksmobile.com/acs/company.com注意
- ACS URL はユーザー環境および LINE WORKS サービスの変更により予告なく変更される可能性があります。
- 必ず SAML Request に含まれる "AssertionConsumerServiceURL" を使用してください。
| Parameter | Type | Description |
|---|---|---|
| SAMLResponse | String | 認証要求に対する応答内容 Base64 エンコード required |
| RelayState | String | 認証要求時に LINE WORKS が指定した RelayState 値 |
<?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 の各項目は下記の通りです。
| Parameter | Type | Description |
|---|---|---|
| Response ID | String | Response を特定するための一意となる値 IdP が任意に設定 required |
| Response InresponseTo | Date(UTC) | SAML Request に含まれる ID required |
| Response IssueInstant | Date(UTC) | SAML Response 生成日時 required |
| Signature | String | デジタル署名 required |
| Assertion ID | String | Assertion を特定するための一意となる値 IdP が任意に設定 |
| Assertion IssueInstant | Date(UTC) | Assertion 生成日時 |
| Subject NameID | String | ログインした LINE WORKS ユーザーの User Key (ExternalKey または LINE WORKS Account) required |
| SubjectConfirmationData InResponseTo | String | SAML Request に含まれる ID required |
| SubjectConfirmationData NotOnOrAfter | Date(UTC) | SAML Response 満了日時 required |
| SubjectConfirmationData Recipient | String | ACS URL required |
| Conditions NotBefore | Date(UTC) | SAML Response 生成日時 required |
| Conditions NotOnOrAfter | Date(UTC) | SAML Response 満了日時 required |
| Audience | String | ACS URL required |
| AuthnStatement AuthnInstant | Date(UTC) | SAML Response 生成日時 required |
| AuthnStatement SessionIndex | String | Session を特定するための一意となる値 IdP が任意に設定 required |
| AuthnStatement SessionNotOnOrAfter | Date(UTC) | LINE WORKS のログインセッション満了日時 |
参考
- LINE WORKS のログインセッション満了日時は SessionNotOnOrAfter の値で指定します。ただし、LINE WORKS サービスのポリシーにより、ユーザーが使用中の場合には自動で延長されることがあります。
- ユーザーの利用デバイスに合わせて SessionNotOnOrAfter の値をコントロールすることもできます。
- SessionNotOnOrAfter を設定していない場合、既定のログイン保持期間として、ウェブ ブラウザでは 24 時間、モバイルアプリおよび PC アプリでは 30 日に設定されます。
<?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>LINE WORKS 側の SAML Response 検証に関するエラーコードは、以下の通りです。
| Code | Message | Description |
|---|---|---|
| 510 | Invalid SAMLResponse. | SAMLResponse XML が不正 |
| 511 | Signature validation Failed. | 署名が不正 |
| 512 | SAMLResponse decoding failed. | Base64 デコードに失敗 |
| 513 | SAMLResponse inflate failed. | SAMLResponse の Inflate エラー |
| 514 | Signature is missing. | 署名されていない |
| 515 | Invalid SAMLResponse. (StatusCode is not Success) | SAMLResponse が不正 (statusCode エラー) |
| 520 | Invalid NameID. (520) | NamedId が不正 |
| 530 | Works login Failed. (530) | ログイン失敗 |
| 531 | Invalid User. (531) | LINE WORKS ユーザーではない NamedId (UserKey) が不正 |
| 532 | No authority to use. | ログインが制限されたユーザー |
| 534 | Invalid IDC. | ログインした IDC が不正 |
| 535 | Invalid Acs Url. | ACS URL が不正 |
| 536 | Certification time is incorrect. | 認証された時間が不正 |
| 537 | Invalid tenant. | SSO が有効になっていないテナント |
| 551 | Error in IDP API. | IdP 側の Login APIでエラーが発生 |
| 552 | SAMLResponse or RelayState is not exist. | IdP 側の Login API で必須データが含まれていない |
| 561 | Unexpected Error. (561) | 不明なエラー |
| 594 | Login Fail. (594) | ログイン失敗 |
| 595 | Invalid Access. (595) | 不正なアクセス |
| 596 | Invalid Access. (596) | 不正なアクセス |
| 598 | Login Fail. (598) | 証明書の照会エラー |
| 599 | Login Fail. (599) | 不明なエラー |