WebSSO Spring перенаправление Angular-uri

#angular #spring #spring-security #oauth #single-sign-on

#angular #spring #spring-безопасность #oauth #единый вход

Вопрос:

Есть spring-web (приложение безопасности).

Вот конфигурация:

    security:
    oauth2:
      client:
        registration:
          *auth:
            provider: *auth
            client-name: Login with the Identity Server
            client-id: ${app.auth-client.client-id}
            client-secret: ${app.auth-client.client-secret}
            authorization-grant-type: authorization_code
            redirect-uri: ?????
    provider:
      *auth:
        token-uri: ${app.auth-client.server-url}/${app.auth-client.realm}/${app.auth-client.server-url-postfix}/token
        authorization-uri: ${app.auth-client.server-url}/${app.auth-client.realm}/${app.auth-client.server-url-postfix}/auth
        user-info-uri: ${app.auth-client.server-url}/${app.auth-client.realm}/${app.auth-client.server-url-postfix}/userinfo
        jwk-set-uri: ${app.auth-client.server-url}/${app.auth-client.realm}/${app.auth-client.server-url-postfix}/certs
 

Основной вопрос заключается в том, как разрешить перенаправление uri для пользовательского интерфейса?
Существует 2 приложения: back (spring) и front (angular)

Он работает с redirect-uri: {baseUrl}/login/oauth2/code/{registrationId}

Но это работает только с REST-API и серверным приложением.

На самом деле, я хочу открыть страницу пользовательского интерфейса — если пользователь не указан — перенаправить на auth-сервер с помощью back. После входа в систему — перенаправление обратно (перенаправление-пользовательский интерфейс ???) на страницу пользовательского интерфейса с учетными данными.

Классический способ. Но это не работает с отдельным пользовательским интерфейсом. Для тестов я использую keycloak.

Ответ №1:

Здесь есть подвох:

 public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
...
@Override
    protected void configure(HttpSecurity http) throws Exception {
        http
              ...
                .oauth2Login()
                .successHandler((request, response, authentication) -> response.sendRedirect(clientProperties.getRedirectUriSuccess()))
 

Необходимо определить перенаправление-uri в пользовательский интерфейс после успешной авторизации. Это не тот же uri перенаправления из конфигурации единого входа.