Azure ADからこのようなトークンを取得すると、「パススルー」トークンと呼ばれます。技術的には、トークンが表すユーザーが、認証が発生したテナントに存在しないことを意味します。パススルートークンの告知の兆候はoid
クレームの不足、idp
クレームの存在、altsecid
クレームの存在、最も重要なのはidp
クレームで、iss
クレームと一致しません。
サードパーティアプリケーションは、Azure ADからパススルートークンを受け取るべきではありません。この場合、トークンはあなたのアプリではないID 00000002-0000-0000-c000-000000000000
のアプリを対象としています。これは、Microsoft GraphまたはAAD Graph(私は忘れている)です。 は、あなたのアプリケーションではないaud
のトークンを検証するトークンである必要があります。任意の時点で、そのアプリケーションの所有者がトークン形式を変更し、アプリケーションを完全に破棄する可能性があります。代わりに、アプリケーションのAppID URI
をresource
パラメータとしてADALに渡し、その結果のトークンをWebサービスに送信する必要があります。 aka.ms/aaddevには、独自のWeb APIを作成する方法を示すサンプルがたくさんあります。
すべてのことを言って、私はここであなたの問題だとは思わない。あなたがテナント39f8b586-1a6c-413e-9fd3-70b57a1d9fa0
、 "Mars Feature 3 Native"テナントに対してユーザーとサインインしているようです。おそらく、ADALのauthority
パラメータに渡す値です。したがって、[email protected]にサインインすると、火星のテナントがあなたのアプリに渡されます(トークンはあなたのアプリ用ではないためです)。代わりに、テナント3836f4a1-67af-43f2-a675-f9f54899abe0
、smartsheet365.onmicrosoft.comテナントを使用する必要があります。その後、Azure ADから通常のユーザートークンを取得する必要があります。
どのADALライブラリ/プラットフォームをお使いですか? – HeidiJ
トークンに正確なクレームを表示してもよろしいですか?この[site](https://jwt.io/)から解析できます。 –
https://jwt.io/へのリンクありがとうございました 貝は(そうでなければ長すぎるので2つに分割する必要があります): { "aud": "00000002-0000-0000-c000- 000000000000" 、 "ISS": "https://sts.windows.net/39f8b586-1a6c-413e-9fd3-70b57a1d9fa0/"、 "IAT":1476374822、 "NBF":1476374822、 "EXP": 1476378722、 "ACR": "1"、 "altsecid": "5 :: 10037FFE8DC424C2"、 "AMR":[ "PWD" ]、 "APPID":「635034ea-2fb2-4906-b3d4- 「eaexp」:10800、 「email」:「test.use」 [email protected]。com "、 " family_name ":" User 69 "、 " given_name ":" Test "、 –