gpt4 book ai didi

azure - 在 Api Management 的 validate-jwt 中验证 "scp"

转载 作者:行者123 更新时间:2023-12-02 07:27:31 24 4
gpt4 key购买 nike

我正在尝试验证传入的 JWT token 是否具有范围“labresults.read”和“user_impersonation”。我执行了以下策略片段

<validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Invalid JWT Token" require-signed-tokens="true">
<openid-config url="(snip)" />
<audiences>
<audience>(snip)</audience>
</audiences>
<required-claims>
<claim name="scp" match="all">
<value>labresults.read</value>
<value>user_impersonation</value>
</claim>
</required-claims>
</validate-jwt>

我传入一个看起来像的 token

{
"iss": "(snip)",
"exp": 1522334650,
"nbf": 1522331050,
"aud": "(snip)",
"sub": "(snip)",
"email": "(snip)",
"name": "Scott Chamberlain",
"scp": "labresults.read user_impersonation",
"azp": "(snip)",
"ver": "1.0",
"iat": 1522331050
}

当我从开发者门户进行“尝试”时,查看跟踪错误报告

validate-jwt (648 ms){
"message": "JWT Validation Failed: Claim value mismatch: scp=labresults.read.."
}

我是否被迫使用单一声明

<claim name="scp">
<value>labresults.read user_impersonation</value>
</claim>

我真的不想这样做,因为我不想强制这个 api 的使用者知道这两个作用域将是唯一按特定顺序传入的东西。

我需要做什么才能以正确的方式验证范围?

最佳答案

在 MSDN 论坛上从 Microsoft 人员那里得到了答案。

I would suggest you to specify “separator” attribute in policy statement to validate the JWT token and see if it helps. For more information, you might refer this document: https://learn.microsoft.com/en-us/azure/api-management/api-management-access-restriction-policies#ValidateJWT.

Swikruti BoseMicrosoft-MSFT (MSFT CSG)

当我第一次查看文档时,我完全忽略了 seperator 属性。

关于azure - 在 Api Management 的 validate-jwt 中验证 "scp",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49558780/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com