Извлечение общих значений из Spring OAuth2 YML - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть следующий файл .yml с конфигурацией OAuth2:

spring:
  security:
    oauth2:
      client:
        registration:
          evesso:
            client-id: xxxxxx
            client-secret: yyyyyy
            authorizationGrantType: authorization_code
            response_type: code
            redirectUriTemplate: http://localhost:8080/login/oauth2/code/
            scope: esi-location.read_location.v1
            clientName: EVE SSO
          evessostats:
            client-id: xxxxxx
            client-secret: yyyyyy
            authorizationGrantType: authorization_code
            response_type: code
            redirectUriTemplate: http://localhost:8080/login/oauth2/code/
            scope: esi-location.read_location.v1,esi-clones.read_implants.v1,esi-skills.read_skills.v1
            clientName: EVE SSO
          evessofc:
            client-id: xxxxxx
            client-secret: yyyyyy
            authorizationGrantType: authorization_code
            response_type: code
            redirectUriTemplate: http://localhost:8080/login/oauth2/code/
            scope: esi-location.read_location.v1,esi-clones.read_implants.v1,esi-skills.read_skills.v1,esi-fleets.read_fleet.v1,esi-fleets.write_fleet.v1
            clientName: EVE SSO
        provider:
          evesso:
            authorization-uri: https://login.eveonline.com/oauth/authorize
            token-uri: https://login.eveonline.com/oauth/token
            user-info-uri: https://login.eveonline.com/oauth/verify
            user-name-attribute: CharacterName
          evessostats:
            authorization-uri: https://login.eveonline.com/oauth/authorize
            token-uri: https://login.eveonline.com/oauth/token
            user-info-uri: https://login.eveonline.com/oauth/verify
            user-name-attribute: CharacterName
          evessofc:
            authorization-uri: https://login.eveonline.com/oauth/authorize
            token-uri: https://login.eveonline.com/oauth/token
            user-info-uri: https://login.eveonline.com/oauth/verify
            user-name-attribute: CharacterName

И, как вы видите, избыточных данных слишком много. Есть ли способ урезать его?

1 Ответ

0 голосов
/ 26 апреля 2018

Насколько я знаю, невозможно существенно уменьшить размер вашей конфигурации .yml или .properties без использования кода.

Однако вы все же можете значительно улучшить свою конфигурацию, сгруппировав дубликаты строк ключей.

1007 * Е.Г. *

server:
  port: 8080
  url: http://localhost:${server.port}

oauth2-redirect-url: ${url}/login/oauth2/code/
oauth2-client-id: xxxxxx
oauth2-client-secret: yyyyyy

spring:
  security:
    oauth2:
      client:
        registration:
          evesso:
            client-id: ${oauth2-client-id}
            client-secret: ${oauth2-client-secret}
            authorizationGrantType: authorization_code
            response_type: code
            redirectUriTemplate: ${oauth2-redirect-url}
            scope: esi-location.read_location.v1
            clientName: EVE SSO
          evessostats:
            client-id: ${oauth2-client-id}
            client-secret: ${oauth2-client-secret}
            authorizationGrantType: authorization_code
            response_type: code
            redirectUriTemplate: ${oauth2-redirect-url}
            scope: esi-location.read_location.v1,esi-clones.read_implants.v1,esi-skills.read_skills.v1
            clientName: EVE SSO
          evessofc:
            client-id: ${oauth2-client-id}
            client-secret: ${oauth2-client-secret}
            authorizationGrantType: authorization_code
            response_type: code
            redirectUriTemplate: ${oauth2-redirect-url}
            scope: esi-location.read_location.v1,esi-clones.read_implants.v1,esi-skills.read_skills.v1,esi-fleets.read_fleet.v1,esi-fleets.write_fleet.v1
            clientName: EVE SSO

Хотя это не сохраняет строки, но добавляет дополнительные строки, оно значительно чище. Если вам нужно изменить порт, то вам нужно всего лишь изменить server.port вместо того, чтобы менять каждый redirectUriTemplate.

ПРИМЕЧАНИЕ : Я показал результат только в некоторых полях, но вы можете применить его к любым значениям, которые имеют дублирующиеся строки (например, область действия, идентификатор поставщика и т. Д.).

Вы также можете разбить свою конфигурацию на разные файлы (например, все конфигурации oauth2 могут быть в application-oauth.yml), а затем включить этот файл с помощью spring.profiles.active:

spring:
  profiles:
    active: oauth2

Но даже если вы сделаете это, я все же рекомендую вам также использовать первое предложение, которое я сделал выше, так как это сведет к минимуму дублированные значения до минимума.

...