我在Azure AKS中使用istio进行身份验证时遇到问题。据我所知,我正在生成一个有效的令牌,但我得到了一个403错误。
应用程序的istio授权配置为:
kind: AuthorizationPolicy
metadata:
name: entitlements-jwt-authz
namespace: osdu
spec:
selector:
matchLabels:
app: entitlements-azure
action: DENY
rules:
- from:
- source:
notRequestPrincipals: ["*"]
to:
- operation:
notPaths: ["/",
"*/v2/api-docs",
"*/swagger-resources","*/swagger-ui.html",
"*/actuator/health",
"/entitlements/v1/swagger-resources/*",
"/entitlements/v1/webjars/*"]
我想尝试更改此策略以允许,这样我就可以尝试将其隔离为令牌问题,但我不确定如何更改此策略,因为kubernetes不是我的经验。有人能给我指正确的方向吗?
我不确定我是否提供了足够的信息,所以请询问是否需要更多信息。
谢谢Mike
我猜您的access_token
与istio的签名验证不兼容。
转到jwt.io分析您的代币。header
是否包含nonce
?如果是,那就是问题所在。Azure对此并不完全透明,但据我所知,签名必须使用JWKS和nonce进行验证,而istio不能。
对我来说,解决方案是将作用域从默认的MS Graph作用域更改为自定义作用域。您可以在应用程序注册中创建一个作用域,也可以使用默认作用域:<appId>/.default
,例如abce-1234-ghkli-5677/.default
。