[英]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.