标签: azure-api-management

使用 Azure API 管理和第三方授权服务器验证传入请求中的授权令牌

我必须在我的项目中使用第三方授权服务器实施 OAuth 2.0。我的客户端和服务器都已经在AS上注册了。我已在 Azure 上创建了一个 API 管理实例并导入了 swagger API。我希望每个传入请求都针对我的 AS 进行验证,因此我只需将请求重定向到https://my-as.com/as/introspect.oauth2,并验证令牌。如果令牌有效,则让它继续,否则发送 401。我试图使用“入站处理”来实现此目的,并参考以下文档: https: //learn.microsoft.com/en-us/azure/api-管理/api-management-howto-protect-backend-with-aad#configure-a-jwt-validation-policy-to-pre-authorize-requests

唯一的问题是我使用的是第三方 AS,而不是 Azure AD。我尝试用我的 URL 替换示例 XML 代码中的 URL,但它不起作用。

如何将请求重定向到授权服务器以验证访问令牌?

authorization azure oauth-2.0 azure-active-directory azure-api-management

0
推荐指数
1
解决办法
2732
查看次数

在 Azure APIM 策略中验证 JWT

在 Azure APIM 中,我试图创建一个将验证 JWT 的策略。无论我尝试什么,我总是收到“401:无效的 JWT”错误。有谁知道我做错了什么?(也许我没有使用正确的签名密钥?)

我的 base64 编码安全密钥是Zm9v.

我在 jwt.io 创建示例令牌,所以我的授权标头是:

Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.Bm8tu4m18oA96xwhBL8AV_4hRpIU6OrK5UaOmGqBEsk
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的政策:

<policies>
    <inbound>
        <base />
        <validate-jwt
            header-name="Authorization"
            require-expiration-time="false"
            require-scheme="Bearer"
        >
            <issuer-signing-keys>
                <key>Zm9v</key>
            </issuer-signing-keys>
        </validate-jwt>
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>
Run Code Online (Sandbox Code Playgroud)

HTTP响应:

cache-control: private
content-length: 48
content-type: application/json
ocp-apim-trace-location: https://xxxxxxx
vary: Origin
{
    "statusCode": 401,
    "message": "Invalid JWT."
}
Run Code Online (Sandbox Code Playgroud)

azure azure-api-management

0
推荐指数
1
解决办法
3409
查看次数

验证内容返回 json 内容类型 Azure Api 管理策略的错误

我正在使用以下代码

    <validate-content unspecified-content-type-action="prevent" max-size="102400" size-exceeded-action="prevent" errors-variable-name="requestBodyValidation">
        <content type="application/json" validate-as="json" action="ignore" />
    </validate-content>
Run Code Online (Sandbox Code Playgroud)

在 api 管理策略中,但是当我发送带有 Content-Type 的请求时,application/json出现错误Unspecified content type application/json is not allowed

不确定问题所在,或者我对政策的理解错误。

有什么建议或解决方案吗?

validation content-type azure policies azure-api-management

0
推荐指数
1
解决办法
2815
查看次数

如何通过 Azure DevOps API 获取与工作项关联的拉取请求

我试图列出与工作项关联的所有拉取请求,但根据工作项 API,似乎没有办法获取它:

GET https://dev.azure.com/{org}/{project}/_apis/build/builds/123456/workitems?api-version=6.0
Run Code Online (Sandbox Code Playgroud)

上面返回工作项列表,例如:

{
  "count": 40,
  "value": [
    {
      "id": "156267",
      "url": "https://dev.azure.com/xxx/_apis/wit/workItems/12345"
    },
    ...
  ]
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我仍然决定查询每个返回的工作项,我仍然看不到拉取请求。例如:

GET https://dev.azure.com/xxx/_apis/wit/workItems/12345
Run Code Online (Sandbox Code Playgroud)

上面返回一个关于对工作项进行的更新的 JSON 对象,但这可以是提交、状态更新或注释。

有没有办法获取每个工作项目的 PR 列表?

谢谢

azure-api-management azure-api-apps azure-devops azure-devops-rest-api

0
推荐指数
1
解决办法
3045
查看次数

使用 Function App 部署 API 管理 - Terraform

我已经通过 Terraform 部署了 Azure HTTP 函数应用程序,我想通过 API 管理来管理对 HTTP 函数的访问。我可以看到如何通过 Terraform 创建 API 管理,但是我看不到如何将我的函数应用程序与 API 管理结合起来。通过控制台,这非常简单。我如何通过 terraform 做到这一点?

azure-api-management terraform

0
推荐指数
1
解决办法
2114
查看次数