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

図1 LINE WORKS サービスとクライアント間の OAuth 2.0 による SSO
Use LINE WORKS services.
LINE WORKS サービスを使用します。ユーザーは Web ブラウザ、LINE WORKS アプリまたは Drive エクスプローラーから LINE WORKS サービスにアクセスします。
Request Authorization Code (redirect).
ユーザーが LINE WORKS サービスにログインしていない場合、LINE WORKS は IdP の認証システムに Authorization Code の発行をリクエストします。
(If not logged in) Launch login page.
ユーザーが IdP の認証システムにログインしていない場合はログインページを表示します。既にログインしている場合は、ログインページを省略して Authorization Code を発行します。
Enter ID/PW.
ユーザーは表示されたログインページで IdP の ID、パスワード等を入力してログインします。
Issue Authorization Code after authentication.
IdP は認証処理を完了させた後、Authorization Code を発行します。
Return Authorization Code (redirect)
IdP は 2 の Authorization Code 発行リクエストに含まれる redirect_uri に Authorization Code をリダイレクトします。
Request Access Token with Authorization Code.
LINE WORKS は発行された Authorization Code で IdP の認証システムに Access Token の発行をリクエストします。
Return Access Token.
IdP は認証システムで Authorization Code を検証し Access Token を返します。Access Token 生成後、Authorization Code を無効化します。
Request user info with Access Token.
LINE WORKS は Access Token を使用して IdP にユーザー情報をリクエストします。
Return user info.
IdP は認証システムで Access Token を検証し LINE WORKS の ExternalKey を含むユーザー情報を返します。
Issue LINE WORKS auth token.
LINE WORKS はユーザー情報をもとに LINE WORKS 認証トークンを発行します。
LINE WORKS の IMAP/CalDAV 接続における認証は、部分的に OAuth 2.0 を利用できます。

図2 OAuth 2.0 による API 認証
Set ID/PW for IMAP and run the service.
ユーザーは IMAP 連携するメールサービス等で LINE WORKS ID と IdP パスワードを使用して LINE WORKS サービスに接続します。
Request Authorization Code (API).
LINE WORKS はユーザーがメールサービス等で設定した LINE WORKS ID と IdP パスワードを IdP の認証システムに渡し IdP の認証システムに Authorization Code の発行をリクエストします。
Issue Authorization Code after verifying ID/PW.
IdP は LINE WORKS ID と IdP パスワードで認証処理を完了させた後、Authorization Code を発行します。
Return Authorization Code (API).
IdP は発行した Authorization Code を LINE WORKS に渡します。2. の API Request に対する Response として Authorization Code を返します。認証失敗時にはエラーコードを返します。
Request Access Token with Authorization Code.
LINE WORKS は発行された Authorization Code で IdP の認証システムに Access Token の発行をリクエストします。
Return Access Token.
IdP は認証システムで Authorization Code を検証し Access Token を返します。Access Token 生成後、Authorization Code を無効化します。
Request user info with Access Token.
LINE WORKS は Access Token を使用して IdP にユーザー情報をリクエストします。
Return user info.
IdP は認証システムで Access Token を検証し LINE WORKS の ExternalKey を含むユーザー情報を返します。
Issue LINE WORKS auth token.
LINE WORKS はユーザー情報をもとに LINE WORKS 認証トークンを発行します。