2017-10-31 20 views
2

Microsoft Bot Framework(C#& Azure)を使用してボットアプリケーションを構築し、dev.botframework.comのMicrosoft Teams Channelを使用してサイドローディングを使用してMSTeamsをボットできるようにしました。このボットは商業的なものになるだろうから、顧客にしかアクセスできないようにする必要がある。 MSチームのボットアプリのインストール時にMicrosoft Teams Bot Appをインストールした人に関する情報を取得

  1. 誰かが我々のアプリをインストールするときに我々は我々のアプリをインストールし、誰「の情報を受け取るために、リダイレクトURLやコールバックをフックすることができますどこ上げている任意のイベントがあります(ユーザー情報、チーム情報、会社情報など) "私は市販のアプリMicrosoft Teams Jira Connectorに出会ったが、どのように商品化したのか分からなかった。

  2. ライセンスのある顧客&のチーム/テナントの詳細を、会社に代わって購入する管理者のためにマップすることができるように、アプリケーション内からインストールを開始する必要があります。我々はtenant_idを取得しているボットが追加されたとき

    私がこれまで試したどのよう

、ボットコードエンドオン

は、私は、Microsoftのチームにインストール/同様の情報を取得するために探していたが、私は多くを見つけることができませんでした。

スラックは、ユーザーのワークスペース情報へのアクセスを提供するためにそれを使用するように役立つかもしれないのOAuthを考えると、私はaccess_tokenを取得していますが、任意のAPIのは、チーム/テナント情報を取得するために呼び出すことが表示されていないOAuth 2.0 & v2.0 Protocols OAuth 2.0試してみました。

EDIT:私はtenant_idやOAuthのを使用して、MSチーム情報とAPIは、プロセスがシンプルになります取得することができれば、それは当社のウェブサイトでは

  1. を次のように私たちがクリックするようユーザーに求められますですボタンをクリックしてOAuthを使用してmsチームにアクセスを許可し、access_tokenを使用してmsチームの情報を取得し、特定の会社にマップされた最後に保存します。

  2. ユーザーがメッセージを送信すると、ユーザーのチーム情報がデータベースのレコードと一致し、有効なユーザーであり、ライセンスを有効にするとカードの[認証/ライセンス有効化]ボタンをクリックするよう求められます。

MicrosoftグラフAPIは、ここでは有用であろう?MS teams developer APIはこれにあなたの提案を入力してください開発

であるように思われます。

+1

ボットをインストールしているときに顧客を認証するのではなく、ボットを使用しているときに顧客を認証すると考えますか?サンプルについては、https://github.com/MicrosoftDX/AuthBot/tree/master/AuthBotを参照してください。 OAuthの 'access_token'はJWTでなければなりません。このトークンを直接復号化して、認証されたユーザに関する情報を得ることができます。 –

+0

@GaryLiuは、AuthBotサンプルが、access_tokenを取得している(郵便配偶者を使用して)同じことをしているようですが、ここでは乱数を使用して、認証されたユーザーがOAuthを通じてアクセスを許可したユーザーと同じかどうかを検証しますここに何かが見つからない場合は教えてください –

+0

@GaryLiu、あなたはボットを使用しているときにユーザーを認証するのが正しいですが、その質問は何に対してです。私たちが従わなければならないライセンスモデルは、個々のユーザーアカウントを持っていません。管理者アカウントによって監視される企業によって購入されたライセンスの数。だから私は両側から情報を得る必要があると思う(インストール/アプリ側/購入中 - 誰が行動を購入したか)、認証中に誰かがボットを使用しているので、同じである2つのキーを比較することができる。 –

答えて

0

私たちのシステムに個々のユーザーアカウントを持っていないのにnoという概念を使用する場合は、認証を行うためです。会社のライセンスと管理ユーザーアカウントの数。次のアプローチは、当社のウェブサイトで

  1. を続けることができ、我々は彼らのMSチームはOAuth 2.0のを使用してid_token(JWTトークン)を使用してへのアクセスを許可する]ボタンをクリックし、会社の管理者に依頼します、我々が得る取り出さ彼らのmsチームの情報を特定の会社にマップされた最後に保存します。

  2. ユーザーがメッセージを送信すると、ユーザーのチーム情報がデータベースのレコードと一致し、有効なユーザーである場合、カードの[認証/ライセンス認証]ボタンをクリックするように求められますライセンス。

Integrating with Microsoft Teams without individual user accounts

ステップ1(これは実際のボット利用者からの情報と照合して検証されます私たちは私達のデータベースでは、当社の顧客情報(テナントID)を持っていることを保証します - 彼らのテナントIDを、彼らが送信するとき私たちのボットにメッセージを)

ステップ2は&がテナントIDを通じてライセンスを有効にすることを確認します。

AuthBotサンプルコードを基準として取られるべきであるOAuth 2.0のフローを行うには、ユーザーのアクセスを許可するには、我々がするために使用することができる認証コードを、取得された場合、あなたはまたOAuth 2.0 & v2.0 Protocols OAuth 2.0

を参照することができますアクセストークンを要求したら、id_token(JWTトークン)を受け取り、ユーザー情報https://jwt.io/を取得するためにそれをデコードします。

チェック「成功応答」とOAuth 2.0

の「JWTトークンクレーム」のセクションでは、しかし、私は、個々のユーザーアカウントなしで賛否よりも多くの短所を見て、私は、個々のユーザーアカウントを持ってお勧めします。 「個々のアカウントを持つ」と「持っていない」の賛否両論を出した後、製品の所有者は個々のユーザーアカウントを持つことを認めました。

0

コメントのテキストの長さの制限のため、私はここで解答として生成することをお詫びします。ご理解いただきありがとうございます。

@ bill-bliss-msftはコメントに記載されているように、https://msdn.microsoft.com/en-us/microsoft-teams/botevents#bot-or-user-added-to-a-teamに表示されているボットのインストールまたは削除中にイベントが発生しますが、ユーザー情報は含まれていません。

一般的な考え方は、購入したユーザーがあなたのボットを使用しているときに認証することです。そして、https://github.com/MicrosoftDX/AuthBot/tree/master/AuthBotにサンプルがあります。ボットクライアントでaccess_tokenを取得し、それをサーバー要求に対する認証ヘッダーとして設定できます。

access_tokenは、Auth 2.0フローのJWTトークンです。したがって、バックエンドサーバーでこのトークンを直接復号化して、認証されたユーザーに関する情報を取得できます。

Azure ADのaccess_tokenのクレームを一見すると、https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-tokensを参照してください。 tenant IDプロパティを利用して、チームまたはグループが購入したユーザーを認証することができます。 Azure ADを使用していない場合、他のAuth 2.0サーバーにも同様のプロパティが存在すると思います。

関連する問題