2021年7月31日土曜日

新Sign in with SlackでAzure AD B2CにSlackでサインインできるようにする

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


Sign in with SlackがOpenID Connectに対応したので、Azure AD B2Cに繋いでみました。

Slackのドキュメントはこちら



ふむふむ。昔のSlack連携はOAuth2.0でidentity.*というスコープが使われていたところがOpenID Connectに対応したってことですね。

ではやってみましょう。


まずはSlack側にアプリ定義を作成

こちらからSlackアプリ定義を作ります。メインはAzure AD B2C(今回のケースだとRelying Partyになります)に渡すためのclient_id、client_secretを作るための行為です。

Create an Appをクリックするとスクラッチから作るかapp manifestを使って作るかを聞かれますので、今回はスクラッチから作ることにします。


アプリ名と対象となるワークスペースを選択して次へ進みます。


ナビゲーションメニューからOAuth & Permissionsを開きます。


少し下にスクロールするとredirect_uriを設定するところがあるので、Azure AD B2CをRelying Partyとして使う場合のCallback Uriを設定します。以下の形式のUriです。

https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/oauth2/authresp

これでSlack側への設定は終わりです。

左のナビゲーションメニューのBasic Informationからclient_id、client_secretが取得できるのでメモしておきましょう。後でAzure AD B2C側に設定します。


Azure AD B2CにIdentity Providerを設定する

次はAzure AD B2C側です。

IDプロバイダのメニューから新しいOpenID Connectプロバイダーをクリックして設定を開始します。

必要なのは以下の設定です。

  • 名前:適当に
  • メタデータURL:https://slack.com/.well-known/openid-configuration
  • クライアントID、シークレット:Slack側で取得した値
  • スコープ:openid profile email
  • 応答の種類:code
  • 応答モード:form_post
  • ドメインのヒント:なし
  • IDプロバイダーの要求のマッピング
    • ユーザーID:sub
    • 表示名:name
    • 名:given_name
    • 姓:family_name
    • 電子メール:email

上記を設定して保存をしたら設定はおしまいです。


ユーザーフローを実行してみる

早速ですが適当なユーザーフローを作ってテストしてみます。アプリはお馴染みのhttps://jwt.msを使います。

フローを実行するとSlackへリダイレクトされて権限に関する同意を要求されます。
その後、素直にAzure AD B2Cへ戻り、Slackから取得した属性が渡ってきていることが確認できます。



ということで、サクッと15分くらいでできてしまうので、ぜひみなさまも試してみてください。




2021年7月23日金曜日

必読!「デジタルアイデンティティー」

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


ついに発売されました。米OpenID Foundation理事長の崎村夏彦さんによるデジタルアイデンティティに関する集大成とも言える書籍、その名も「デジタルアイデンティティー 経営者が知らないサイバービジネスの核心」です。

献本いただきましたので早速熟読してみました。


もう一言では言い尽くせないのですが、何しろ素晴らしい。(ボキャブラリー不足、、汗)

ここまで体系的かつ広い視点でデジタルアイデンティティに関して俯瞰した書籍は洋書を含めて存在していなかったんじゃないか?と思います。(Phil Windleyの「Digital Identity」はもちろん良書ですが、如何せん2004年の書籍なので古くなってきています)


とにかくこちらから購入できるので、まだの人は今すぐポチるのです。


ざっと感想を含め見どころを。

  • 言葉の定義が経緯を含めとにかく丁寧に書かれている
    • これを見ると世の中に出回っている記事がどれだけ適当な理解で書かれているのかわかってしまいます。この辺がこの領域をわかりにくくしている原因の一つだと思います。
  • 技術仕様がなぜ必要なのか、OAuth/OpenID Connectがなぜ必要となったのか、など歴史的な経緯を含め解説されている
    • 頑張って仕様を読んでも、あくまで結果をみているだけなので、なぜこのような仕様になったのか?がわからず腹に落ちにくい点もあると思います。もちろん解説記事やイベントでのプレゼンテーションは存在するのですが、分散してしまっているので体系的に理解するのは至難の業です。
  • FAPIやeKYC&IDAなど若い仕様についても言及されている
    • 単純にフレームワークとしてのOAuth/OpenID Connectだけでは不足している実世界でのユースケースと対応するためのプロファイル群についても詳細に記載されている。
  • よく知っている事件を例に何が必要だったのかを解説しており、理解しやすい
    • ドコモ口座事件、SBI証券の不正出金の件、Facebookのアクセストークン漏洩事件などIT業界のみならず広く報道された事件の裏側がデジタルアイデンティティの側面から解説されており、腹落ちしやすい。
  • プライバシーと個人情報保護の関係、トラストフレームワークなどビジネス担当も技術担当も周辺知識として知っておく必要がある知識もカバーしている
    • まさにサブタイトルにもなっている「経営者がしならない〜」という点にも繋がりますが、システム担当だけでなくビジネス担当やまさに経営者の方も知らなかった、では済まされないプライバシー尊重に関する考え方についても非常に易しく書かれており、非技術者でも読みやすい。

書き始めるとキリがないので、この辺りでやめておきます。

また、大きな特徴として「他の文献への参照が異常に少ない」という点が挙げられると思います。これは常に第一線でデジタルアイデンティティに取り組んでこられた崎村さん自身が執筆している、ということが大きく影響していると思われます。つまり、本書は今後の文献では一次ソースとして扱われることになる、ということを示しています。その点においても必携・必読であるとも言えます。


ちなみに、OpenIDファウンデーション・ジャパンでは崎村さんをお招きして本書の見所解説などを直接お話しいただく出版記念イベントを企画している最中です。こちらは纏まりましたら改めてお知らせしたいと思います。(サインもらえるかも!)