我有一个 Micronaut 休息端点,由@Secured(SecurityRule.IS_AUTHENTICATED)
@Secured(SecurityRule.IS_AUTHENTICATED)
@Controller("/product")
@Secured({"Admin"})
public record ProductController(IProducer iProducer) {
@Get(uri = "/{text}")
public Single<String> get(String text){
return iProducer.sendText(text);
}
}
我正在使用Validation with remote JWKS
https://micronaut-projects.github.io/micronaut-security/latest/guide/#jwks
应用程序.yml
micronaut:
security:
enabled: true
token:
jwt:
enabled: true
signatures:
jwks:
okta:
url: 'https://xxx-xxxxxx.okta.com/oauth2/default/v1/keys'
解码 JWT
{
"jti": "AT.Y4r-Hu9ss5FXJRomosJlJRSGSsv4vscLeGI5seM2BJA",
"iss": "https://dev-6271510.okta.com/oauth2/default",
"aud": "api://default",
"iat": 1608187083,
"exp": 1608190683,
"cid": "0oa2lezagQ4wrRUnW5d6",
"uid": "00u2kavl6tQtJ7NNj5d6",
"scp": [
"openid"
],
"sub": "anandjaisy@gmail.com",
"Admin": "anandjaisy@gmail.com"
}
问题
- 由于我使用远程 JWKS 验证,这是验证 OKTA JWT 令牌的唯一方法。如何在没有远程 JWKS 的情况下验证 OKTA JWT。
- 在我有一个声明ADMIN的令牌中,如何使用 ADMIN 声明保护我的控制器路由。我试过
@Secured({"Admin"})
它给我 403 禁止 - 有没有办法为要求创建安全要求和处理程序