passport-azure-adを使用してユーザーを認証しようとしています。アプリは共通のログイン画面を表示しますが、ログインするとブラウザウィンドウは空白になり、動作を示すスピナーが表示されます。一方私のサーバーは、コールバックエンドポイントへのPOST要求の連続ストリームを受信しています。passport-azure-adを使用する際のトラブルPassportjsのOIDCStrategy
この間、私のパスポート機能(検証、serializeUserおよびdeserializeUser)はこれまでに呼ばれていません。ここ
私の戦略の定義である:
app.get("/auth/azure", passport.authenticate('azure', {failureRedirect: '/'}))
app.post("/auth/azure/callback",
(req, res, next) => {
console.log("POST Callback Received!");
next();
},
passport.authenticate("azure", {
failureRedirect: "/error.html"
}),
(req, res) => {
console.log("Recieved POST callback")
res.redirect("/user")
})
言及するいくつかのこと:
- 私はのためのアプリを開発してい
passport.use("azure", new azureStrategy({ identityMetadata: 'https://login.microsoftonline.com/common/.well-known/openid-configuration', clientID: "*************************", responseType: 'code id_token', issuer: "https://sts.windows.net/********************/", responseMode: 'form_post', redirectUrl: "http://localhost:5055/auth/azure/callback", allowHttpForRedirectUrl: true, clientSecret: "**********************************" }, function(iss, sub, profile, accessToken, refreshToken, done) { console.log("ID TOken: ", profile.oid); //Never gets called console.log("User" ,profile) //Never gets called done(null, profile); })); passport.serializeUser(function(user, done){ console.log("serialize: ", user) //Never gets called done(null, user); }) passport.deserializeUser((user, done) => { console.log("deserialize: ", user) //never gets called done(null, user); })
そして、ここでは私のルート定義があります私の組織では、私たちのADでユーザーを認証するだけです。
- 私は最初に
https://login.microsoft.com/<tenant>...
バージョンのidentityMetadataを使用しようとしましたが、APIバージョンでサポートされていないアプリケーションに関するエラーが表示されました。一般的な方法を使用してその問題を解決したようです。 - 上記のとおり、
console.log()
はserializeUser、deserializeUserにコードされており、確認コールバックは決して呼び出されません。私nodejsサーバー上の
コンソールウィンドウは、単純にこのことを示しています
Request at: 1477083649230 GET/{}
Request at: 1477083649235 GET /login.html {}
Request at: 1477084498737 GET /auth/azure {}
Request at: 1477085275630 POST /auth/azure/callback {}
POST Callback Received!
Request at: 1477085275980 POST /auth/azure/callback {}
POST Callback Received!
Request at: 1477085276335 POST /auth/azure/callback {}
POST Callback Received!
Request at: 1477085276679 POST /auth/azure/callback {}
POST Callback Received!
Request at: 1477085277042 POST /auth/azure/callback {}
POST Callback Received!
あなたは、私がそのセッションを殺すか、サイト上の別のページを参照するまで、それはちょうどに行くことがわかります。 POSTコールバックログが作成されている間は、認証後に行われるログは決して実行されないことに注意してください。
ご協力いただければ幸いです。
あなたの2番目のミドルウェアコールは 'passport.authenticate(" azure "、{...})' –
ではありません。残念です。私はコードサンプルをそれが想定されている方法で整理しました。 – RHarris
'azureStragegy'とは何ですか?私はdocs(https://github.com/AzureAD/passport-azure-ad)で見つけることができません –