こんばんは。この記事では、Azure Bot Serviceにユーザ認証を構成する手順を解説します。
Contents
Azure Bot Serviceのユーザ認証とは?
電子メールのチェック、フライトステータスのチェック、注文の配置など、bot がユーザーの代わりにセキュリティで保護されたオンラインリソースにアクセスする必要がある場合があります。 ユーザーは、bot に代わってそのことを承認する必要があります。 bot を承認するには、ユーザーが自分の id を認証する必要があります。 OAuth は、ユーザーを認証し、bot を承認するために使用されます。
公式Docより
ユーザ認証の構成手順
今回は、Azure AD V2を利用したユーザ認証を構成します。公式Docの手順はこちら。
Azure AD側の設定
上の手順に従って、Azure AD側で
- リダイレクトURI
- 新規シークレットの発行
- APIのアクセス許可
を行います。今回は、既にAzure Bot Serviceリソース作成時にアプリ登録が自動的にされていたので、上の手順のように全く1からアプリ登録は行っていません。
既存のアプリ登録に、以下の変更を加えています。
リダイレクトURI
Azure Bot Serviceに対応するアプリ登録を選択し、
認証ブレードで「プラットフォームの追加」を選択。
「Web」を選択すると、「リダイレクトURI」の設定が求められるので、Docにかいてあった「https://token.botframework.com/.auth/web/redirect」を追加。
その下はDocにガイダンスがなかったので、一旦未入力のまま完了。
シークレット
続けてシークレット。
「証明書とシークレット」から、このBotアプリに対する新たなシークレットを発行すればOKです。このシークレット値を控えておきます。
APIのアクセス許可
あとはAPIのアクセス許可。ここで、認証完了後に利用できるAPIを設定しておきます。
これでAzure AD側の事前設定が完了です。
Azure Bot Service側の設定
続けて、Azure Bot Service側の設定です。
Azure Bot Serviceの「構成」ブレードから「OAuth接続設定の追加」を押します。
UI上の説明が乏しくて不親切なのですが、公式Docを読んだ感じだと、Client Idとシークレットには、このBot Service自体のクライアントID(アプリケーションID)とシークレットを入力すればよいっぽい・・?
ちょっと考えてみましたが、この認証は、ユーザがこのボットに対して、Graph API等を介してユーザの情報を取得したりすることを許可する、ということなので、ユーザの権限を付与する先のアプリID(つまりこのボットのID)を設定すればよい、ということだと理解しました。(理解が違っていたらスミマセン・・)
スコープは、オプショナルですが未設定だと無効なスコープだと怒られたので(イケてない?!)、適当にUser.Readを設定しました。
この段階で、「接続のテスト」を実行してみます。
うまくいっていると、以下のような画面が出るはずです。
承諾すると・・テスト画面っぽいUIに遷移して、発行されたトークンが確認できました!
アプリ側の設定
ここまでの手順で、Botが、テナントのユーザ情報を操作するために必要なトークンを受け取れれるようになりました。
実際には、このトークンを受け取って、アプリ側でAPIの呼び出しなどを行っていくことになると思いますので、アプリ側でこのトークンを使った処理を実装していく必要があると理解しました。
その手順は以下に解説がありますが、ここまでの手順でちょっと疲れたので笑、公式ドキュメントに説明を譲りたいと思います笑 また時間をみつけて自分でも試してみたいと思います。
以上、Azure Bot Serviceでユーザ認証を構成する手順の解説でした。な
んか、変にAzureに慣れてきているからか分かりづらいDocを見ながらでもなんとか進めていけるようになってきたけど、やっぱりどこか直感的じゃなくて初見だったら意味不明だろうなぁとも思うので、この設定にしても、もう少し直感的なエクスペリエンスになるとよいなぁ笑
同じことをしようとしている方の参考になりましたら幸いです。この記事が少しでもお役に立ちましたら、下のいいねボタンをポチっていただけますと励みになります・・!
おしまい
コメントを残す