node.js でサクッと作る azure ad 連携アプリ! ~ 挑戦編
TRANSCRIPT
Node.js でサクッと作るAzure AD 連携アプリ !挑戦編 !
Node.js アプリケーションで Azure AD のシングルサインオン
自己紹介Self Introduction
大平かづみ 現職 : アイレット株式会社 cloudpack事業部
クラウドインテグレーターのなかのプログラマ 過去の経歴
SIer でガラケーやカーナビのミドルウェア開発 (C/C++)
Web 系開発 (Ruby on Rails, Phalcon PHP Framework)
お世話になっているコミュニティ Windows 女子部 チームクラウド SoftLayer / Bluemix 女子会 Japan AWS User Group (JAWSUG)
qpstudy 、 DevLOVE 、 PHP 界隈 など
Twitter: dz_Facebook: dzeyelidQiita: dz_
Prologueはじめに
青いクラウドをつなげたい!
きっかけThe beginning
きっかけ アプリケーションに、欠かせないのが ID 管理 とはいえ、 ID 管理や認証処理は意外と大変! ID 管理をより簡単に安全にできないかしら?
ID 管理といえばSpeaking of identity management
Active Directory?
Active Directory?
イタリアン・神引用元 : Episode 86 - Windows Azure Active Directory with Vittorio Bertocci - Microsoft Azure Cloud Cover Show - Channel 9
Active Directory?
ジャパニーズ・神引用元 : ビル・ゲイツ絶賛!Microsoft澤円氏の「結果を出すビジネス会話」6つの極意 - リクナビNEXTジャーナル
失礼いたしました。
そもそも、プログラマが Active Directory を構築したり、 AD FS 連携したりすること自体が難関です…AD FSDirectory
アプリケーション連携させるには、 AD のほかに、 AD FS ( フェデレーションサービス ) が必要
IDaaS という選択Choice of IDaaS
IDaaS とは Identity as a Service の略 サービスとして ID 管理を提供すること 主に ID 情報の管理や、認証機構の提供を行う
IDaaS といえば、
AzureActive Directory
Azure AD のおさらい クラウドベースのフルマーネジドな ID 管理 多くに対応したシングルサインオン 業界標準のプロトコルをサポート 多くのプラットフォームと連携可能 オンプレミスの Active Directory との同期
Azure AD は様々なプラットフォームから利用可能! サポートしているプロトコル
SAML 2.0 、 WS-Federation 、 OpenID Connect など オープン ソースのクライアント ライブラリ
.NET 、 Windows ストア、 iOS 、 Android 向け REST ベースの Graph API OAuth 2.0 サポート
アプリケーションを作ろうLet’s try to make application
Azure AD が簡単便利なら、アプリケーションの開発も簡単便利に作りたいね!
PaaS を使おう!
PaaS といえば、
IBM Bluemix
(WebApps じゃなくてごめんなさい! 完全に個人都合ですw )
だって青いクラウドつなげたいじゃないですかっ!
( 完全に個人都合 )
気を取り直して…That didn't discourage
アプリケーションの構成 実行環境 : IBM Bluemix 言語 : Node.js Node.js モジュール : passport, passport-azure-ad
Node.js の認証ミドルウェア PassportPassport is authentication middleware for Node.js
Passport って?Node.js で認証機能を実装するときに重宝するミドルウェア。Express というウェブアプリケーションフレームワークと相性が良い。Passport は、 Strategy という単位で様々な対象に対する認証機能が提供されている。 Facebook や Twitter などの SNS の認証や、 OpenID などプロトコルの認証など。
Passport で Azure AD をUse Azure AD on Passport
passport-azure-ad って?Passport で Azure AD のシングルサインオンを利用できるミドルウェア!サンプルコードも提供されているので、着手しやすい。
だが、しかぁし!!私のシルバーウィークはこの子との壮絶な戦いに明け暮れる日々でしたw
見えざる罠Invisible traps
見えざる罠サインインから抜け出せない罠アクセストークンが取得できない罠サインイン成功してるのに、ログインできない罠
勝ったよ!Invisible traps
この手につかんだ勝利!サインインから抜け出せない罠
→ マルチテナントを設定しよう!
この手につかんだ勝利!アクセストークンが取得できない罠
→ Microsoft アカウントを使ってサインインしようとした場合に発生する。共通のエンドポイントでなく、ディレクトリ(テナント)固有のエンドポイントを指定する。
この手につかんだ勝利!サインイン成功してるのに、ログインできない罠
→ https のアプリケーションの場合は、セッションクッキーの設定を有効にし、 https でもデータが保持されるようにする。
トラブルシューティング詳細Check! Node.js で Azure AD を! ~ passport-azure-ad の導入とトラブルシューティング
次に挑戦したいことNext Challenge?
Azure AD B2C Previewを試したい!
謝辞Thanks a lot !
謝辞Microsoft 系アイコンは、福岡の松本さんが作られたベクター形式のアイコンセットを拝借いたしました!便利です!ありがとうございます!Microsoft系のアイコン(Microsoft CloudnEnterprise Symbols)をベクター形式にしてみた話。 | nrjlog
謝辞作業を進めるうえで困ったときにアドバイスを下さった、デプロイ王子、こと廣瀬さんありがとうございます!
謝辞今日、この素晴らしい機会をくださった、 Windows 女子部 3代目部長の木下未来さんありがとうございます!!
最後までお付き合いくださった会場の皆さま、ありがとうございました!