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



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

当在poster中使用ROPC应用程序生成令牌时,会生成Access令牌,但在授权时

var bearerStrategy = new BearerStrategy(options,
function (token, done) {
console.log(options);
console.log(token);

// Send user info using the second argument
done(null, {}, token);
}

);

这将返回未经授权的。

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

@Sruthi comment解决了这个问题,将其添加为结束问题的答案:

对于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为ROPCcurl -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'获取访问令牌

由于您使用的是旧的源URLlogin.microsoftonline.com,因此不应再引用您的应用程序和API。相反,对所有新应用程序使用b2clogin.com,并将现有应用程序从login.microsoftonline.com迁移到b2clogin.com。请参阅官方文档

最新更新