我已在 API 管理中配置了版本 v1 的 Oauth 2.0 授权服务器,并且还配置了 API 以使用 OAuth 2.0 用户授权。 在开发者门户上选择 Authotization_code 后,我可以获得令牌。
当我尝试使用生成的令牌请求任何 API 时,我收到 401 响应 我有五个 API,其中一些 API 版本的 API 规范是 v1,有些是 v2,并且所有五个 API 的受众都不同。
"auth": {
"audience": [
"api://**************",
"9f*****-****-****-****-*******418"
],
我是否需要从授权服务器中的相应 audience
指定客户端 ID 和客户端密钥,并将回调 URl 添加到
audience
中的相应应用程序(
app registrations->app (which is mentioned in auth->audience)
)?我是 APIM 新手,有人遇到过这个问题吗?你是如何解决的?
访问令牌是一个base64编码值,应以授权标头的形式与API请求一起发送。
Authorization: Bearer XXXXXXXXXXXXXX...
需要在代码中运行时获取token。或者,为了进行测试,您可以向 MS OAuth 2.0 端点发布请求:
标题
POST /YOUR_TENANT_ID/oauth2/v2.0/token
HTTP/1.1 Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
身体
grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&scope=api://YOUR_API_ID/.default
如果您还没有 API ID,可以从 API 管理中的门户获取 API ID。您应该收到如下回复:
{
"access_token": "YOUR_ACCESS_TOKEN",
"token_type": "Bearer",
"expires_in": 3600,
"ext_expires_in": 3600,
"scope": "api://YOUR_API_ID/.default"
}
获得令牌后,将 XXXXXX... 替换为上面的内容,并将授权令牌包含在您的 API 请求中。