npm パッケージの Passport-samlを使用して、Azure AD でシングル サインオン フローを使用するアプリケーション。
nodejs Express フレームワークで構築されたアプリケーション。
パスポート saml 構成は、次のスニペットのようになります。
ファイル名 - config.js
passport: {
strategy: 'saml',
saml: {
path: process.env.SAML_PATH ,
entryPoint: process.env.SAML_ENTRY_POINT || 'https://login.microsoftonline.com/tenant/saml2',
issuer: 'app id',
cert: process.env.SAML_CERT,
callbackUrl: "https://application_url/login/callback",
logoutUrl: 'https://login.microsoftonline.com/tenant/saml2',
}
}
上記の構成エントリ ポイントでは、logoutUrl は同じです。
Passport SAML 戦略を使用して Azure AD に接続する高速アプリのコード スニペット。
ファイル名 - connect.js:
const SamlStrategy = require('passport-saml').Strategy;
const config = require('./config.js');
app.use(passport.initialize())
passport.serializeUser((user, done) => {
done(null, user);
});
passport.deserializeUser((user, done) => {
done(null, user);
});
passport.use(new SamlStrategy(config.passport.saml,
function (req, token, refreshToken, profile, done) {
}
))
/*express app router*/
app.get("/login", (req, res, next) => {
passport.authenticate(config.passport.strategy, { failureRedirect: "/" })(req, res, next);
})
app.post('/login/callback', (req, res, next)=> {
/*processing logic after the successful auth from Azure AD SAML*/
})
この時点まで、Azure AD で SAML 認証を実行し、ログイン コールバックも受け取ることができました。注: ログイン コールバックは、Azure AD アプリケーションのリダイレクト URI で適切に構成されています。
次に、高速アプリ ルーターでログアウトを実行する際に問題が発生しました。
LogoutUrl は Azure AD アプリケーション設定で構成されます
アプリが movelogout ルートにヒットし、Azure Ad セッションをログアウトする必要があるとき。パスポート saml 戦略を使用して、このルート内で Azure AD にログアウト要求を発行するにはどうすればよいですか?
コードは続く ファイル名: connect.js
app.get('/movelogout', (req, res, next)=> {
//How to issue logout request ?
})
/*Callback for successful logout in Azure AD*/
app.post('/logout', (req, res, next) => {
//Do post logout operation
})
簡単に言うと、passport-saml を使用して Azure シングル サインアウト SAML プロトコルを実現しようとしています。リンクには SAML ログアウト リクエストがあり、SAML リクエストを発行する JavaScript の方法で説明がありません。
config の logoutUrl と Azure 設定のフロントエンド ログアウト URL の関係がよくわかりません。
Azure AD セッションのログアウトを手動で実行するための提案や解決策は大歓迎です!