本文演示了如下内容:
1. 部署了一个Node JS WEB API, 该API受AAD B2C保护(使用Passport.js );
2. 使用POSTMAN 模拟客户端请求,从AAD B2C获取Access Token后向API发起请求;
步骤:
1. 准备Node js API 网站,该网站为微软示例代码;
2. 在AAD B2C中为Node js API 新增应用程序,并添加已发布的作用域;
3. 在AAD B2C中为Postman 新增应用程序,并将该应用程序对 Node js API 应用授权;
4. 增加ROPC登录用户流(无需浏览器的用户流);
5. 在Postman中使用ROPC终结点获取Access Token;
6. 在Postman中携带Access Token访问Node js API;
视频介绍:
您可以在B站观看本节视频:https://www.bilibili.com/video/BV1Cc411h7fM/
或在本站观看:
图文介绍:
本文使用示例代码:https://github.com/Azure-Samples/active-directory-b2c-javascript-nodejs-webapi
添加一个Node JS 的 应用程序:
注意,本例子中 回复URL填写:https://localhost:5000, 该值是因为我们示例代码是通过该url访问的。
ID URI 填写 ”API“ 或者其他值都可以。
在已发布的作用域中增加如下两项:
本例中,需至少保留demo.read,原因是示例代码中,对"demo.read"这个字符串进行了检测。
如下图,代码中使用了“demo.read”字符串进行了权限检测,如果要修改,则Azure Portal中的 AAD B2C中的应用已发布作用域和代码需要同时修改才行!
接下来创建 postmanclient应用程序:
设置API访问权限,允许postmanclient访问 api的权限:
修改示例代码中的配置文件:
本文视频中的第06:00分钟进行了详细的配置解释,介绍了如何找到这些值;
对于配置中的用户流,需要新建一个 ROPC类型的用户流,该类用户流不需要使用浏览器跳转以登录获取Token:
根据需要,选择需要返回到Token中的 值即可:
示例代码逻辑如下:
如果用户权限中有 “demo.read”,则返回用户name属性,否则,返回403错误:
启动网站:
按照如下参数即可取出Access Token:
其中如下值需要根据实际情况修改,本文视频10:00左右详细解释了每个字段从哪里可以取到值
使用Token进行请求,如下图可以执行成功:
同时,我们可以在Node JS的代码中拿到用户信息,拿到用户信息后,可以跟业务逻辑进行集成了:
至此,本文结束!