У меня есть конечная точка отдыха 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
Application.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": "[email protected]",
"Admin": "[email protected]"
}
Вопросы
- Поскольку я использую валидацию с удаленным JWKS, это единственный способ проверить токен OKTA JWT. Как я могу проверить OKTA JWT без удаленного JWKS.
- В токене у меня есть требование ADMIN, как я могу защитить свой маршрут контроллера с помощью утверждения ADMIN. Я пробовал
@Secured({"Admin"})
, он дал мне 403 запрещенных - Есть ли способ создать требование безопасности и обработчик для требования?
Security
, чтобы узнать, что там доступно, и, возможно, посмотрел бы, есть ли у Micronaut какие-либо фильтры безопасности в том же духе, что и Spring. Мой опыт работы с Micronaut показывает, что в целом он требует меньше усилий, чем Spring, поэтому я не удивлюсь, если они не найдут хороший способ сказать, что эта конечная точка требует утверждения x со значением y - person Gavin   schedule 17.12.2020roles
требуется только jwt. Возможно, когда вы решите свою проблему, вы сможете дать здесь ответ? Удачи. - person Gavin   schedule 17.12.2020