2017年10月17日火曜日

jwt.msとjwt.io。JWTオンライン・デコーダを比べてみる

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

eyJ・・・とくると脊髄反射してしまうID厨の方々は既にご存知だと思いますが、JWT(Json Web Token)の中身を眺めてデバッグをする時にとっても役に立つのがオンライン・デコーダです。

個人的には、Auth0が提供しているjwt.ioをずっと使っていたのですが、最近マイクロソフトが提供し始めたjwt.msも意外と便利なので比べてみます。

使い方はjwt.ioもjwt.msも共通で、eyJ・・・の文字列を張り付けると自動的にデコードされ、JSONが表示されます。

◆jwt.io

まずはjwt.ioです。

左側に張り付けると右側にデコードされたヘッダ、ペイロードが表示されます。
単純にペイロードの中身にどんなクレームが飛んでいるのかを見るには十分です。

jwt.ioの一番の特徴は各言語毎のJWTのハンドリング用のライブラリと対応状況を掲載しているところでしょう。Ruby用、PHP用ライブラリとして、OpenID Foundation Japanのnovの作品も紹介されています。


◆jwt.ms
次にjwt.msです。

ちなみに画面構成がものすごくシンプルなので、誰が運営しているのか見た目からは全く理解できませんが、whoisで調べるとちゃんとマイクロソフトがドメインの持ち主であることがわかります。

基本機能はjwt.ioと全く同じです。
画面上部に張り付けると下にデコードされた結果が表示されます。

jwt.msの一番の特徴は各クレームの情報が細かく確認できることだと思います。
Claimsタブを開くと各クレームの意味など細かい情報が出てきます。


まとめると、
・ライブラリを調べたい時はjwt.io
・各クレームの意味・仕様を細かく知りたい時はjwt.ms
といったところでしょうか。

まぁ、最終的には好みですね。


2017年10月16日月曜日

[告知] Tech Summit 2017で Azure AD B2C+LINE、Yahoo! ID辺りの話をします

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

9月、10月とイベント続きで、あまりblog書きなどの各時間が取れなかったのですが、もう少しイベントは続きます。

と、言うことで昨年と同じく今年もMicrosoft Tech Summitに登壇いたします。

公式サイト※早期申込割引は終わっちゃったみたいですが、お申し込みはこちらから。
https://www.microsoft.com/ja-jp/events/techsummit/2017/


昨年はAzure ADとアプリケーション連携の話とハンズオンラボの2本でしたが、今年は個人的ブームでもあるAzure AD B2Cネタです。

「Azure AD B2C と LINE 連携により実現する学校や企業における次世代 ID/メッセージ基盤」というタイトルでDay2の夕方16:25~17:15が出番で、先日リリースさせてもらった、LINEやYahoo! IDの連携をテーマにIdentity Experience Framework(IEF)をDeepに解説したいと思います。



IEFを50分で語りつくすのは不可能に近いので、Azure AD B2Cとは?みたいなところは、すっ飛ばしていきなり、フレームワークの構造の話から始めてしまうと思うので、初心者を置いてけぼりにする気がものすごくします。レベル400で足りるのだろうか、、という一抹の不安があります。。。

というわけでチラ見せします。
この画面を見てピンとこないと置いてけぼりになる・・・・ということは無い様に最大限努力はしたいと思いますが、まぁ全編こんな画面を見続けることなると思います。


まぁ、公式ドキュメントがほぼ存在しないという状態なので、プロトコルの仕様とマイクロソフトの開発陣のパラメータ命名規約のクセからXMLのエレメント名と設定値を推測しながら開発を進めていくという苦行をここ半年ばかりやってきたので、少しはわかりやすくご説明できるようになったんじゃないかな、と思っています。

この辺りをマスターすると、以下のような感じで色々なソーシャル・ネットワークをIdPとして使うことが出来る様になったり、外部のDBからRESTでClaimを取得したりすることが出来るようになります。※以下はInstagramとつないだ例です。




ということで、ぼちぼち資料作りを始めていこうと思いますので、当日お会いできることを楽しみにしております。


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も目指すそうなので頑張って欲しいですね。






2017年9月20日水曜日

[FIM/MIM]Forefront Identity Managerのメインストリームサポートは2017年10月10日まで

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

そういえばForefront Identity Manager 2010/2010 R2/2010 R2 SP1のメインストリームがもうすぐ終了します。
https://blogs.technet.microsoft.com/iamsupport/2017/02/22/warning-forefront-identity-manager-fim-mainstream-support-is-ending-10102017/



まだFIMを使っている人もいないとは思いますが、まだの場合はMicrosoft Identity Managerへのアップデートが必要ですね。
MIMが出たての頃はアップデートするのにかなり苦労しましたが、最近はちゃんと設定関係の引継ぎもできるようになっているので、ぜひアップデートしましょう。

ちなみに拡張サポートは2022年10月11日までですが、バグフィックスなどの提供がベストエフォートになってしまいますので、自己責任運用になりますね。

ちなみに私の開発環境の一部がまだFIMなので・・・・面倒だけどこの際アップデートします。

2017年9月7日木曜日

[リリース]LINE/Yahoo! IDを使ってOffice365へのログインを便利にする

こんにちは、富士榮@北海道です。

たまにはお仕事の話です。

本日、Azure AD B2CとLINE、Yahoo! JAPAN IDを連携させるソリューションを雇用主よりプレス発表しました。

SNSアカウントを活用するシステムの構築サービスを開始
http://www.ctc-g.co.jp/news/press/20170906a.html

Impressさん、日経電子版などのメディアに取り上げていただけました。

IT Leaders
 http://it.impressbm.co.jp/articles/-/14950
日経電子版
 https://www.nikkei.com/article/DGXLRSP456311_W7A900C1000000/
クラウドWatch
 http://cloud.watch.impress.co.jp/docs/news/1079437.html

本日北海道大学で開催されたCloud Week 2017で、本件に関する講演を行いデモを含めお披露目をさせていただきました。



簡単に内容を説明すると、Azure AD B2Cをカスタマイズし、
・LINEやYahoo! JAPAN IDなどの日本でメジャーなIdPへの対応
・Office365やG SuiteなどSAMLアプリケーションへの対応
・Microsoft Graphを利用し、Office365に届く重要なメールをLINEへも通知
・個別、一斉でのSNSへのメッセージ配信
というような仕組みをくみ上げたサービスとなっています。



こんな感じです。

動いている姿は以下です。


こんな流れです。
1.LINEで友達になる
2.LINEメニューから組織の払い出したID/PWDでOffice365へログインする
3.LINE IDと紐づけを行う
4.重要なメールはLINEへも通知する様に設定する
5.LINE IDでOffice365へシングルサインオンする
6.Office365へ重要なメールが届くとLINEのタイムラインへも通知される


他にも、公衆無線Wifiへのユーザ登録の簡素化などにも使えます。WeChatなどの中国のSNSにも対応しているので観光客向けのサービスとして無線LANを提供するようなケースを想定しています。


公衆無線Wifiを使った不正行為やいたずらが増えてきているらしいので、サービスレベルの向上(登録の簡素化)と利用者への到達性、証跡の確保の両立をしたい場合などはうまく使ってもらえると思います。

追記)
Cloud Week 2017で使った資料を公開したので、張り付けておきます。



尚、今後は以下のイベントで詳細を説明していきますので、是非ご参加ください。
・9/15 Japan Identity & Cloud Summit 2017
 https://nosurrender.jp/jics2017/
・10/13 CTCフォーラム 2017
 https://www.event-site.info/ctcforum2017/
・11/08 Tech Summit 2017
 https://www.microsoft.com/ja-jp/events/techsummit/2017/
・12/13 AXIES年次総会
 URL未定

また、個別に仕組みが知りたい、という方はぜひご連絡ください!
(標準のAzure AD B2Cでは出来ないことを独自拡張でかなりカバーしているので)

2017年8月23日水曜日

[Azure AD/Office365]Azure AD Connectでカスタムコネクタを使用する

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

先日公開したAzure AD ConnectとCDATA API Serverを組み合わせたSalesforce.comへのプロビジョニングや、3年ほど前に公開したAzure AD ConnectからOpenAMのレポジトリとして構成したOpenDJへのプロビジョニングの記事では、Azure AD ConnectのMicrosoft Identity ManagerのSynchronization Serviceとしての機能を使ってカスタムのコネクタ(ECMA2エージェント)や組み込みのGeneric LDAP Connectorを使って「無理やり」、ADやAzure AD以外のシステムとの同期を実現していました。
※Azure AD ConnectにGeneric LDAP Connectorなどが同梱され始めたのは1年くらい前ですね。

実はこの構成、オフィシャルに公開されていなかっただけで、Premierサポートとの契約があれば使うことは出来たんですが、なかなかハードルが高いので、これまであまり言及してきませんでした。

しかし、Azure Active Directory PoCプレイブックの中に、しれっとGeneric LDAP Connectorを使ったオンプレミスLDAPとAzure ADの同期のシナリオが記載されていることに気が付いてしまいました(笑)

Generic LDAPコネクタ構成
https://docs.microsoft.com/ja-jp/azure/active-directory/active-directory-playbook-building-blocks#generic-ldap-connector-configuration

流石に、こんな注意書きが添えられていてハードルを上げまくっています。まぁ、やってみるとそれほど難しくはありませんが。
これは高度な構成で、FIM/MIM に関する知識を必要とします。 運用環境で使用されている場合、この構成に関するご質問については、Premier サポートを使ってお問い合わせください。

Azure AD ConnectがGAしたタイミングで公開されたドキュメントに書いてある構成が徐々に実現してきている、ということですね。




ちなみに以下のドキュメントを見ると、オンプレミスのLDAPなどへAzure AD Connectを使って接続する構成はFR(今後サポート)となっており、正式にサポートされたわけではないので、実際に利用する場合はPremierサポートと十分に協議をすることをお勧めします。

ハイブリッド ID ディレクトリ統合ツールの比較
https://docs.microsoft.com/ja-jp/azure/active-directory/active-directory-hybrid-identity-design-considerations-tools-comparison



2017年8月15日火曜日

JICS 2017開催!コンシューマから学術、エンタープライズまでIDに関与している人は参加必須です

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

お馴染みのVittorio Bertocci氏を招聘したJapan Identity & Cloud Summit(JICS)2014から3年、久しぶりにJICSが復活します。



今年は、ゲストが豪華です。

  • オープニング・キーノートはプレゼンのわかりやすさでは定評のあるSalesforce.comのChuck Mortimore氏
  • 続くキーノートはMicrosoft CorporationのAlex Weinert氏よりCloud Identity元年的な話でIdentityの将来を見据えた時にオープン・スタンダードの重要性について
  • そこからはブレークアウトセッションに分かれて金融、学術、ソーシャル、IoT、トラストフレームワークなど見所がたくさん
  • セキュリティネタではOWASP Japanのリーダー岡田氏
  • お馴染みOpenIDファウンデーション・ジャパンのエヴァンジェリスト達による標準技術(OAuth、OpenID Connect)の解説
  • クロージング・キーノートはこれまたIdentity界隈では知らぬ人はいない、Nishant Kaushik氏からNRI/OpenID Foundationの崎村さん、というこれまた必聴のセッションで畳みかけ。

見所満載です。

私もモバイル・ソーシャルのトラックとトラスト・フレームワークのトラックの2つを見ており、2コマ+VTR再放送で都合3コマも登壇するのですが、自分が出ている時間帯のセッションが聞けないのが非常に残念です。



定員は1000名くらいだったと思いますが、希望のセッションを登録時に選択する方式なので、早めに登録しないと聞けないセッションもあると思うので、ぜひ早めに登録を!

登録はこちらから。
https://nosurrender.jp/jics2017/