首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重定向到redirectURL护照-蔚蓝-ad OIDCStrategy

重定向到redirectURL护照-蔚蓝-ad OIDCStrategy
EN

Stack Overflow用户
提问于 2020-12-03 21:50:04
回答 1查看 668关注 0票数 2

我正在尝试通过Azure AD Passport.js OIDCStrategy登录。到目前为止,我使用了接下来的两页(除了Google,并在这里研究堆栈溢出的问题)作为资源:

我有以下问题,因为我还想扩展我的知识,名词passport.js和Azure广告策略:

当我转到/auth/AzureAD时,

  1. 会被重定向到https://login.microsoftonline.com/登录表单。但是,当我输入有效的登录凭据时,我会被重定向到redirectUrl。我在做什么wrong?
  2. Should还有一个router.post用于/auth/AzureAD/回调,如果是的话,为什么?
  3. 为其他passport.js策略(谷歌和本地),我们需要存储一些细节到我们的MongoDB。这不应该也适用于Azure广告策略吗?如果是这样的话,您使用的是哪个details?
  4. When而不是OIDCStrategy?

我确信我已经用正确的方式配置了identityMetadata和ClientID。我不会分享这些信息,因为我不确定我是否有正确的做法。

非常感谢,如果你能帮我走向正确的方向!

passport.js

代码语言:javascript
复制
const passport = require('passport');
const OIDCStrategy = require('passport-azure-ad').OIDCStrategy
const mongoose = require('mongoose');
const User = require('../Models/User');

  passport.use(
    new OIDCStrategy(
      {
        identityMetadata: 'https://login.microsoftonline.com/XXX.onmicrosoft.com/v2.0/.well-known/openid-configuration',
        clientID: 'XXX',
        responseType: 'code id_token',
        responseMode: 'form_post',
        redirectUrl: 'http://localhost:3000/auth/AzureAD/callback',
        allowHttpForRedirectUrl: true,
        clientSecret: 'XXX',
        validateIssuer: false,
        isB2C: false,
        issuer: null,
        passReqToCallback: false,
        scope: ['profile', 'offline_access'],
        loggingLevel: 'info',
        nonceLifetime: null,
        nonceMaxAmount: 6,
        clockSkew: 300,
          },
  function(iss, sub, profile, accessToken, refreshToken, done) {
    if (!profile.oid) {
      return done(new Error("No oid found"), null);
    }
    // asynchronous verification, for effect...
    process.nextTick(function () {
      findByOid(profile.oid, function(err, user) {
        if (err) {
          return done(err);
        }
        if (!user) {
          // "Auto-registration"
          users.push(profile);
          return done(null, profile);
        }
        return done(null, user);
      });
    });
  }
));

app.js

代码语言:javascript
复制
//Passport middleware - Express Session
  session({
    secret: process.env.SESSION_SECRET,
    resave: false,
    saveUninitialized: false,
    store: new MongoStore({ mongooseConnection: mongoose.connection, collection: 'sessions' }),
  })

app.use(passport.initialize());
app.use(passport.session());

auth.js

代码语言:javascript
复制
const express = require('express')
const passport = require('passport')
const router = express.Router()

// @desc    Auth with Google
// @route   GET /auth/AzureAD
router.get('/AzureAD', passport.authenticate("azuread-openidconnect", { scope: ['profile'] }))

// @desc    AzureAD auth callback
// @route   GET /auth/AzureAD/callback
router.get(
  '/AzureAD/callback',
  passport.authenticate("azuread-openidconnect", { failureRedirect: '/login' }),
  (req, res) => {
    res.redirect('/')
  }
)

login.ejs

代码语言:javascript
复制
<div class="section">
    <a href="/auth/AzureAD" class="btn red darken-1">
        <i class="fab fa-microsoft"></i> Log In With Azure
    </a>
</div>
EN

回答 1

Stack Overflow用户

发布于 2020-12-08 21:29:01

这是预期的行为。form_post.

  • There's

  • 是的,因为您将responseMode设置为不需要。

  • 用户OIDCStrategy将用户重定向到Azure AD登录表单,如果成功登录时获得id令牌。使用BearerStrategy验证附加到HTTP请求.

的访问令牌

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65134680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档