2017-10-25 10 views
0

(下の例のすべてのIDが作成されています。いくつかのパラメータの形式を示すために、これらのIDを追加しました)。passport-azure-ad:なぜ「jwtオーディエンスは無効です」と表示されますか?

私のテナントはacme.co.ukですが、私はhttps://subdomain.acme2.co.ukに配備したWebアプリケーションでAzure ADにユーザーの認証を委任します。

new portal: (フィールド名は、紺碧のポータルで使用されているものです)を使用して私のアプリを以下のように登録しました。

のApp IDのURL:https://acme.co.uk/11111111-2222-3333-4444-555555555555

ホームページURL:https://subdomain.acme2.co.uk/api/auth/aad

返信のURL:https://subdomain.acme2.co.uk/api/auth/aad/callback

と値と有効期限はありません秘密鍵を作成しました: '111111111111111111/aaaaaaaaaaaaaaaaaaaaaaaa ='

私はpassport-azure-ad github sample using v1 endpointをガイドにしています。

{ 
    allowHttpForRedirectUrl: false, 
    clientID: 'https://acme.co.uk/11111111-2222-3333-4444-555555555555', 
    clientSecret: '111111111111111111/aaaaaaaaaaaaaaaaaaaaaaaa=', 
    identityMetadata: 'https://login.microsoftonline.com/acme.co.uk/.well-known/openid-configuration', 
    isB2C: false, 
    issuer: null, 
    loggingLevel: 'info', 
    passReqToCallback: false, 
    redirectUrl: 'https://subdomain.acme2.co.uk/api/auth/aad/callback', 
    responseMode: 'form_post', 
    responseType: 'code id_token', 
    skipUserProfile: true, 
    useCookieInsteadOfSession: false, 
    validateIssuer: true 
} 

私は私のブラウザで「https://subdomain.acme2.co.uk/api/auth/aad」に着いたとき、私はそれからやるれ、ログインするMSにリダイレクトが、バック「https://subdomain.acme2.co.uk/api/auth/aad/callback」へのリダイレクトが発生したとき、私は認証されていませんよ。私が見たコールバックPOST要求からヘッダを検査

In _validateResponse: jwt audience is invalid. expected: https://acme.co.uk/11111111-2222-3333-4444-555555555555,spn:https://acme.co.uk/11111111-2222-3333-4444-555555555555 

私が間違って何をやったか任意のアイデアを??? [: - |

(これは痛みです。私はドッカーで動作しており、リダイレクトは正しく動作していないようですので、実際の環境のATMに展開する必要があります)。

+1

これはhttps://github.com/AzureAD/passport-azure-ad/issues/309ですか?補足として、リダイレクトは通常の302です。ブラウザでドッキングされたアプリケーションにアクセスできる場合は、リダイレクトが機能するはずです。 –

+2

デバッグの面では、chrome開発ツール、ネットワークタブ、「ログの保存」を有効にし、login.microsoftonline.comに送られた 'state'クエリ文字列パラメータと' https: // subdomain.acme2.co.uk/api/auth/aad/callback'を実行します。 –

+0

情報ありがとうございます。ええ、私はその問題を見ましたが、残念ながら私は最新のバージョン(3.0.8)です。私は、クエリ文字列の状態値をレスポンス 'フォームデータ' - > '状態'と比較しました。まったく同じ(URLエンコーディングは見られませんでした)。 –

答えて

0

確認済み... クライアントID: 'https://acme.co.uk/11111111-2222-3333-4444-555555555555' が原因でした。

アプリIDはアプリID URIでなくてはなりません。 Doh。ガイダンスのために@Alex Blexに感謝します。これが最も役に立ちました。

関連する問題