Есть ли конечная точка для получения настроенного публичного сертификата в приложении Spring Security OAuth? - PullRequest
0 голосов
/ 01 декабря 2018

В приложении Spring Boot, которое работает как Сервер авторизации с Spring Security Oauth, я настроил JWT и пару ключей для подписи токенов.

Существует ли какая-либо существующая конечная точка, которая позволяет нам получить общедоступный сертификат?

Ответы [ 3 ]

0 голосов
/ 01 декабря 2018

Вы можете использовать конечную точку обнаружения .well-known для получения сведений обо всех конечных точках, алгоритмах подписи и т. Д.

0 голосов
/ 02 декабря 2018

Вы уже написали ответ на свой вопрос, но, возможно, справка может помочь, см. Руководство для разработчиков OAuth 2 :

Токены JWT

[...] Токены подписаны по умолчанию, и Ресурс-сервер также должен иметь возможность проверять подпись, поэтому ему нужен тот же симметричный (подписывающий) ключ, что и для Сервера авторизации (общий секретный ключ, или симметричный).ключ), либо ему нужен открытый ключ (ключ верификатора), который соответствует закрытому ключу (ключу подписи) на сервере авторизации (открытый-закрытый или асимметричный ключ).Открытый ключ (если доступен) предоставляется сервером авторизации на конечной точке /oauth/token_key, которая по умолчанию защищена с помощью правила доступа "denyAll ()".Вы можете открыть его, введя стандартное выражение SpEL в AuthorizationServerSecurityConfigurer (например, "allowAll ()", вероятно, достаточно, поскольку это открытый ключ).

и

@Override
public void configure(AuthorizationServerSecurityConfigurer oauthServer) throws Exception {
    oauthServer.tokenKeyAccess("isAnonymous() || hasAuthority('ROLE_TRUSTED_CLIENT')").checkTokenAccess(
                "hasAuthority('ROLE_TRUSTED_CLIENT')");
}

В этом примере мы настраиваем как конечную точку /oauth/check_token, так и конечную точку /oauth/token_key (поэтому доверенные ресурсы могут получить открытый ключ для проверки JWT).Эти две конечные точки защищены базовой аутентификацией HTTP с использованием учетных данных клиента.

0 голосов
/ 01 декабря 2018

Вот оно: /oauth/token_key

Чтобы разрешить несанкционированный доступ, нам нужно добавить это:

@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter {

    ...
    @Override
    public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
        security.tokenKeyAccess("isAnonymous()");
    }
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...