我有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。请参阅官方文档