繁体   English   中英

使用 ROPC Azure B2C 流程访问 Web API(Nodejs)(无需浏览器登录)

[英]Access Web API(Nodejs) using ROPC Azure B2C flow (Without browser login)

我有一个 Web API,它是一个 NodeJs 代码。 在 Web API 中,我们使用 (passport.authenticate('oauth-bearer', {session: false}) 保护 API。

在邮递员中使用 ROPC 应用程序生成令牌时,会生成访问令牌,但在授权时

var bearerStrategy = new BearerStrategy(options,
function (token, done) {
  console.log(options);
  console.log(token);
  
    // Send user info using the second argument
    done(null, {}, token);
}

);

这将返回未经授权。

我已根据文档添加了范围并配置了本机和 Web API。

此问题已由@Sruthi 评论解决,将其添加为关闭问题的答案:

对于login.microsoftonline.com ,它通常用于执行Azure 广告租户的登录请求以获取令牌。 对于b2c租户,您需要使用tenant-name.b2clogin.com来执行请求。

使用ROPC 流获取访问令牌:

 POST https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/B2C_1_ROPC_Auth/oauth2/v2.0/token username=<username> &password=<Passxword> &grant_type=password &scope=openid+app_id+offline_access &client_id=<client_id> &response_type=token+id_token

(从评论移动到答案)。

您可以使用 curl 获取访问令牌,用于 ROPC curl -X POST -d "client_id=Clientid&scope=openid+appid+offline_access&grant_type=password&username=username&password=password&response_type=token" https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/B2C_1_ROPC_Auth/oauth2/v2.0/token'

由于您使用的是旧的原始 URL,即login.microsoftonline.com不应再引用您的应用程序和 API。 相反,将b2clogin.com用于所有新应用程序,并将现有应用程序从 login.microsoftonline.com 迁移到 b2clogin.com。 请参考官方文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM