API 复制
我在 azure 门户中创建了一个简单的 azure 函数应用程序,并通过 http 绑定运行。函数只返回字符串“来自安全 API 的 Hello”。
接下来在平台功能中,我选择了Authentication/Authorization。我打开了应用服务身份验证。我选择了请求未通过身份验证时要执行的操作:使用 AAD 登录。选择 AAD 作为我的提供程序并配置为 Express 模式(默认目录)并为新的 Active Directory 应用程序选择 {name}。
我还添加到 CORS 策略地址:http://localhost:8080我的 Vue.js 客户端应用程序正在运行。
在这些操作之后,我已经在我的 AAD 中注册了应用程序,并且已经定义了user_impersonation范围。AD App 已经配置了重定向 URI:https://{name}.azurewebsites.net/.auth/login/aad/callback,在 Web 平台上检查了 Id 令牌的隐式授权。我想将支持的帐户类型更改为多租户,但由于某些错误我不能。
在 Expose Api 部分,我将 App Id Uri 从 https://{name}.azurewebsites.net 更改为 api://{app id} 以选择多租户支持的客户端类型。已经定义了 user_impersonation 范围。
客户代理
我在 Web 平台上使用重定向 uri http://localhost:8080/注册了我的应用程序,并在隐式授予部分中同时选择了 id 和访问令牌。我选择了多租户帐户类型。
我向我的 API(天蓝色函数)添加了 api 权限api://{api app id }/user_impersonation
我在我的 vue.app 中使用 MSAL.JS。我在那里完成了我所有的工作。弹出窗口,提供我的登录名和密码。
我从身份提供者 (AAD) 在我的 vue.js 客户端应用程序中收到了 id 令牌和访问令牌。
我正在使用授权标头 Bearer {access_token} 向我的 API(天蓝色函数)发送请求。
问题
我的 API 请求未经授权。我得到状态 401:
POST https://{azure func name}.azurewebsites.net/api/HttpTrigger1?code={code}== 401 (Unauthorized)
Http 地址是从 azure 门户复制的。
当我单击链接时,我被重定向到登录,然后在浏览器选项卡中使用我的“Hello from secure API”文本重定向到 azure 函数。
我似乎 Easy auth 将我的 azure 函数视为客户端应用程序,无论我是否希望它成为我的 vue.js 应用程序的中间件 APi。我的 Azure 函数 API 应该只接收和验证访问令牌。
试过了
我还尝试使用令牌从邮递员发送请求,但也收到了未经授权的请求。
我探索了令牌,它似乎是正确的:
"aud": "api://{Azure function App Id (id in AAD)}",
"iss": "https://sts.windows.net/{tenant id}/",
"appid": "{registered vue js client app id (id in AAD)}",