背景
我在Azure-API-Mangement中创建了一个测试API。只要我提供" subscription-key"我就可以从API获取数据。我不知道如何设置安全性以与Azure AD链接。
我正在Angular中创建一个SPA,并使用adal-angular5。我已按照此excellent guide on SpikesApps进行操作,但使用的是 adal-angular5 而不是 adal-angular4 。我能够获得登录用户的1296个字符标记。见下面的截图:
上面链接的SpikesApps指南连接到作为Azure WebApp创建的API,而不是Azure-API-Management的一部分。该指南使用用户令牌并将其作为HTTP get中的标头提交。 (授权:承载[用户1296 char令牌])。
我对Azure的了解有限,这告诉我为Azure WebbApp API设置安全性与Azure-API-Management中的API不同。
我的情况与SpikesApps指南的不同(以及我为什么会卡住),是我想要安全地连接到属于Azure-API-Management的API。
我的问题:
是否可以在Azure-API-Management中保护API,以便我的Angular SPA可以通过提供Authorization: Bearer <user 1296 char token>
标题来访问它? (即根据SpikesApps guide内访问的API)。
如果没有,我的选择是什么?
我已经阅读了一些关于&#34; validate-jwt&#34; Azure-API-Management中的API策略。如果这是唯一的方法,我如何获得JWT?我假设JWT与我已经拥有的1296个char用户令牌不同?
屏幕截图
(在我的Angular SPA中显示由adal-angular5获得的用户信息)
(adal-angular5如何将Authorization标头添加到get请求的示例。https://www.npmjs.com/package/adal-angular5)
答案 0 :(得分:3)
在发布上述问题后的一小时内确定了解决方案(在此之前,我浪费了很多时间!)。
需要将 validate-jwt 添加到API的入站政策中。
我是按照此页面上的(部分)说明完成的:https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-protect-backend-with-aad#configure-a-jwt-validation-policy-to-pre-authorize-requests
真的只需要执行以下操作: