5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【LINE WORKS】SSO SAML IdPを簡単に試してみる

Last updated at Posted at 2022-12-29

はじめに

LINE WORKS Developersには「LINE WORKSログイン」という、LINE WORKSのユーザーをIDとしてSSOを自サービスへ組み込める開発者機能がある。

LINE WORKSのテナントをSSOのIdP (Identity Provider) 側として、自身のサービスにログインを組み込む。

注意

今回は動作・設定方法の検証を目的とするため、本番利用は想定していません。データの扱いについては十分ご注意ください。

構成

ssoidp.drawio.png

LINE WORKSのSSO IdPは「SAML」に対応している。
検証として今回SP側は、SAMLのテストができる「SAMLTEST.ID」を利用する。

このサイトでは、アカウント登録など無しにSAMLのSP側・IdP側の両方を簡単に検証できる。このSAMLTEST.IDをSP側として、LINE WORKSをIdP側としてSAMLで繋いで、LINE WORKSのIDを使ってログインできる仕組みを構築する。

前提

  • LINE WORKSテナント作成済み
    • ※ SSOはスタンダードプラン以上で利用可能
  • ユーザー作成済み

1. LINE WORKS側にSP情報を登録

SAMLTEST.IDからSP情報を取得しておく。
LINE WORKS側はMetadataには対応していないため、必要な情報を以下の画面からそれぞれ取得する。

https://samltest.id/download/
image.png

entityIDAsserionConsumerService URL の2つが必要となる。

SP情報を取得したら、LINE WORK側に設定する。
設定は、「Developer Console」の「SAML Apps」で行う。

「SAML Apps」の「追加」からSP情報を登録する。以下の必須項目を入力し、「次へ」からAppを登録する。

  • Application Name: 任意の名前
  • ACS URL: SAMLTEST.IDから取得した「AsserionConsumerService URL」
  • SP Issuer(Entity Id): SAMLTEST.IDから取得した「entityID」

image.png

image.png

デフォルトで「使用状態」が「無効」となっているため、「変更」で有効化する。

image.png

これで、SP情報の登録は完了。

2. SAMLTEST.IDにIdP情報を登録

まず、LINE WORKSのDeveloper Consoleの「SAML Apps」からIdP情報を取得する。Appを1つ以上登録されていると、右上から「LINE WORKS Identity Provider情報」を取得できるようになる。

証明書も必要となるため、「Certificate」からダウンロードしておく。

image.png

SAMLTEST.IDへはMetadataでIdPの情報をアップロードする必要があるが、LINE WORKS側はMetadataに対応していないため、以下のサイトを使って生成する。
 
https://www.samltool.com/idp_metadata.php

LINE WORKS側から取得したIdP情報を入れて、生成する。

  • EntityId : LINE WORKS IdP情報の「Response Issuer」
  • Single Sign On Service Endpoint (HTTP-REDIRECT) : LINE WORKS IdP情報の「SSO URL」
  • SP X.509 sert : LINE WORKS IdP情報の「Certificate」でダウンロードしたpemファイルの内容のうち、最初と最後の行の除いた、値部分を入れる。

そのほかは入力不要。

image.png

「BUILD IDP METADATA」ボタンで生成すると、以下のようなXML形式の値が表示される。これを適当なテキストエディタにコピーしてファイルとして保存しておく。

IdP Metadata例
<?xml version="1.0"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" validUntil="2022-12-31T07:47:37Z" cacheDuration="PT1672904857S" entityID="https://auth.worksmobile.com/saml2/<yourlineworks>">
  <md:IDPSSODescriptor WantAuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
    <md:KeyDescriptor use="signing">
      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:X509Data>
          <ds:X509Certificate>xxxxxxxxxx</ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>
    </md:KeyDescriptor>
    <md:KeyDescriptor use="encryption">
      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:X509Data>
          <ds:X509Certificate>xxxxxxxxxx</ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>
    </md:KeyDescriptor>
    <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
    <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://auth.worksmobile.com/saml2/idp/<yourlineworks>"/>
  </md:IDPSSODescriptor>
</md:EntityDescriptor>

生成したIdP MetadataのファイルをSAMLTEST.IDのUpload formからアップロードする。

https://samltest.id/upload.php
image.png

image.png

これで、IdP情報の登録は完了。

3. テスト

実際にログインを試してみる。SAMLTEST.IDの「Test Your IdP」から試すことができる。

「Login Initiator」に、IdP側のEntityID (LINE WORKS側から取得したIdP情報の「Response Issuer」)を入力し、「GO!」でログインシーケンスが始まる。

https://samltest.id/start-idp-test/
image.png

設定が正しい場合は、以下のようなLINE WORKSのログイン画面が表示される。

※ 既にログイン済みだった場合やセッションが残っていた場合はこの画面はスキップされる。

image.png

LINE WORKSのユーザー情報を入力しログインが成功すると、SAMLTEST.IDへ戻り、ログインに関する情報が表示される。

image.png

まとめ

今回は特に設定方法についての検証として、SAMLTEST.IDを使った方法について紹介した。
この仕組みを取り入れれば、IDをLINE WORKSに集約できるほか、LINE WORKSから自分達のサービスへシームレスに移動も可能となり利便性向上に期待できる。

もう少し実践的な例もまたまとめてみたい。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?