OAuth 2.0 による SSO

    OAuth 2.0 による SSO の仕組みと実装方法について説明します。

    図1 LINE WORKS サービスとクライアント間の OAuth 2.0 による SSO

    図1 LINE WORKS サービスとクライアント間の OAuth 2.0 による SSO

    1. LINE WORKSサービスを使用します。
      ユーザーは Web ブラウザ、LINE WORKS アプリまたは Drive エクスプローラーから LINE WORKS サービスにアクセスします。

    2. Authorization Code 発行をリクエストします。
      LINE WORKS サービスにログインしていない場合、Identity Provider(IdP) 側の認証システムに Authorization Code の発行をリクエストします。

    3. (IdP 側で未ログイン状態の場合)ログインページに遷移します。
      IdP 側の認証システムにログインしていない場合は、ユーザーにログインページを表示してください。

    4. 認証システムの ID、パスワード等を入力します。
      ユーザーは認証システムのポリシーに従って ID、パスワード等を入力し、認証を完了します。

    5. IdP 側で認証完了後、Authorization Codeを発行します。
      IdP 側で正しく認証されると、Authorization Code が発行されます。
      すでに IdP 側でログイン済みの場合は、3~4番のプロセスが省略されて Authorization Code が発行されることがあります。
      Authorization Code は、Access Token 生成後に消滅する一回性のコードでなければなりません。

    6. Authorization Code を LINE WORKS サービスに返します。(redirect)
      2 の Authorization Code 発行リクエストに含まれる redirect_uri を用いて Authorization Code が redirect されます。

    7. Authorization Code を用いて Access Token をリクエストします。
      Authorization Code を用いて IdP 側の認証システムに Access Token をリクエストします。

    8. Access Tokenを LINE WORKS サービスに返します。
      IdP 側の認証システムで Authorization Code を検証し、Access Token を返します。

    9. Access Token を用いてユーザー情報をリクエストします。
      Access Token を用いて IdP 側の認証システムにユーザー情報をリクエストします。

    10. ユーザー情報を返します。
      IdP 側の認証システムで Access Token を検証し、ユーザー情報 (LINE WORKS の ExternalKey を含む) を返します。

    11. LINE WORKS の認証トークンを発行します。
      LINE WORKS 認証システムは、ユーザー情報をもとに LINE WORKS サービス用の認証トークンを発行します。

    OAuth 2.0 による API 認証

    LINE WORKS サービスの IMAP/CalDAV 接続における認証は、部分的に OAuth 2.0 を利用できます。

    図2 OAuth 2.0基盤のAPI認証

    図2 OAuth 2.0 による API 認証

    1. IMAP 用の ID とパスワードを設定して実行します。
      ユーザーは Outlook 等のメールアプリで ID とパスワードを使って LINE WORKS サービスに接続します。

    2. Authorization Code 発行をリクエストします。(API)
      LINE WORKS サービスでは、ユーザーが設定した ID とパスワードを IdP 側の認証システムに渡し、認証情報の確認と Authorization Code 発行をリクエストします。SSL 接続のみをサポートします。

    3. ID とパスワードで認証を行い、Authorization Code を発行します。
      IdP 側の認証システムは渡されたIDとパスワードで認証を行い、成功した場合に Authorization Code を発行します。認証失敗時はエラーコードを返します。

    4. Authorization Code を返します。
      2.の API リクエストに対する応答として、Authorization Code を返します。(認証失敗時はエラーコードを返します。)

    5. Authorization Code を用いて Access Token をリクエストします。
      LINE WORKS サービスは Authorization Code をパラメータとして IdP 側の認証システムに Access Token をリクエストします。

    6. Access Token を返します。
      IdP 側の認証システムは Authorization Code を検証して Access Token を発行し、LINE WORKS サービスに返します。

    7. Access Token を用いてユーザー情報をリクエストします。
      Access Token をパラメータとして IdP 側の認証システムにユーザー情報をリクエストします。

    8. ユーザー情報を返します。
      IdP 側の認証システムは、Access Token を検証後にユーザー情報 (LINE WORKS の ExternalKey を含む) を返します。

    9. LINE WORKS の認証トークンを発行します。
      LINE WORKS サービスは受け取ったユーザー情報をもとに LINE WORKS 用の認証トークンを発行します。