2017年9月28日木曜日

#linedevday 参加!LINE LoginがOpenID Connect対応したので早速試す

こんにちは、富士榮です。

本日はLINE Developer Day 2017にお邪魔して来ました。

大盛況でした。
先日プレス発表させていただいた通り、最近はエンタープライズからコンシューマまで、と仕事の幅が広がっておりまして、その中でもLINEはやはり外せないのでちょっと場違いな感じがしつつもがっつりと朝から晩まで参加させてもらいました。

先日のプレス関係
 [リリース]LINE/Yahoo! IDを使ってOffice365へのログインを便利にする
 http://idmlab.eidentity.jp/2017/09/lineyahoo-idoffice365.html


先日のJICSでもお世話になった御代田さんの話を含め個人的な注目ポイントは、

  • LINE LoginがOpenID Connectに対応
  • 2018年春を目途に2要素認証とQRコードログインに対応
  • LINE LoginとBot連携(Botへの友達登録を認可に含められる)
  • LINE Login側でのセッション管理が可能に
  • Flexible Rich Menu APIでID連携状態の取得と動的なメニュー構成の変更

でした。

その中で取り敢えずLINE LoginのOpenID Connect対応とBot連携許可のあたりを試してみました。(Bot連携は特別にAPIを使えるように設定してもらいました)

ますはOpenID Connect対応です。例によってAzure WebAppsで簡単なアプリを書いて連携させてみています。

まずは仕様から。
ドキュメントはここにあります。
https://developers.line.me/en/docs/line-login/web/integrate-line-login/

API version 2まではOAuth2.0ベースでしたが、今回リリースされた2.1(刻むなぁ)からOpenID Connectベースとなったため、わざわざアクセストークンを取得してからProfileエンドポイントへ属性を取りに行かなくてもIDトークンに基本属性は入ってきてくれます。尚、メールアドレスや電話番号などこれまでパートナー向けのProfile APIでしか提供されなかった属性もIDトークンでは取得できるようになるようです。(現時点ではまだ取れません)

取り敢えずはcodeフローしか試していませんが、必要な情報は以下の通り。

  • Authorizeエンドポイント
    • https://access.line.me/oauth2/v2.1/authorize
  • Tokenエンドポイント
    • https://api.line.me/oauth2/v2.1/token
  • ClientID/Secret
  • Redirect Uri


若干エンドポイントに違和感が。。。v2.1って刻むなぁ、というあたりとAuthorizeエンドポイントとTokenエンドポイントのホスト名が異なるあたりががが。

ClientIDはLINE用語ではChannel ID、Client SecretはChannel secret、Redirect UriはCallback URLです。いずれもDeveloper Consoleで設定が確認できます。



尚、認可リクエストの際にbot_promptというパラメータをつけるとログインと同時にBotと連携することが出来ます。こんな感じのパラメータをつけてリクエストを書きました。
        'client_id'=>$client_id,
        'response_type'=>$response_type,
        'redirect_uri'=> $redirect_uri,
        'scope'=>'openid profile',
        'state'=>$state,
        'nonce'=>$nonce,
        'bot_prompt'=>'normal'

ちなみにbot_promptに'normal'を指定するとScope指定と同じような感じでBot連携を認可することが出来ますし、'aggressive'を指定すると認可後、Botとの連携許可画面が別途出てきます。



これまではLINE LoginとBot連携をしようとすると個別に友達追加をしないとダメでしたが、この拡張によりよりシームレスに連携が出来るようになりました。

ちなみにbot_promptをaggressiveにするとscope認可の後に友達追加画面が出ます。

※「ブロック解除」になっているのは、テストのため一旦友達になってからブロック~削除をしたためです。

取得できるIDトークンの中身はいたってオーソドックスで、従来のProfileエンドポイントで取得できたuserIDがsub、あとはdisplayNameとPictureUrlが取れるくらいです。



今後の話としては、discovery(well-known)やuserInfo(まぁ、Profileエンドポイントがあるので良いとは思いますが)がまだないので、実装するという話と、先に書いた通りメールや電話番号などの属性をIDトークンへ追加するあたりが予定されているということでした。OpenID FoundationのCertificationも目指すそうなので頑張って欲しいですね。






0 件のコメント: