В следующем примере https://github.com/spring-cloud-samples/sso URL-адрес сервера авторизации/аутентификации предопределен в application.yml.DIscoverying Oauth Server через Eureka
Вопрос в том, может ли я иметь конфигурационный сервер и eureka в своей архитектуре, может ли служба SSO обнаружить authserver через Eureka, а не предопределять его в файле конфигурации?
Я попытался изменить конфигурационный файл, используя имя службы вместо localhost: 8080. Это не сработало.
oauth2:
client:
tokenUri: http://authserver/uaa/oauth/token
authorizationUri: http://authserver/uaa/oauth/authorize
clientId: acme
clientSecret: acmesecret
resource:
jwt:
keyUri: http://authserver/uaa/oauth/token_key
id: openid
serviceId: ${PREFIX:}resource
В том же процессе мышления, вместо предоставления keyUri в JWT, можно заселить открытый ключ непосредственно через сервер конфигурации? Каким будет синтаксис?
Редактировать: После нескольких тестов выяснилось, что tokenUri и authorizationUri очень хорошо открываются. Я могу использовать имя службы вместо localhost: 8080. Вопрос только в том, что делать с keyUri.
Я был бы рад обновить образец и добавить некоторую документацию, если это действительно работает. Сначала я хотел бы получить квалификацию: я ожидал бы, что использование имени службы вместо имени хоста будет работать только в том случае, если вы используете «RestTemplate» из поддержки ленты Spring Cloud. Но функция SSO основана на использовании 'OAuth2RestTemplate', который построен Spring OAuth, поэтому я не понимаю, как это можно было бы узнать о балансировщике нагрузки. –
Я только что испытал снова, и, похоже, все работает нормально. Теперь мой POM значительно отличается от моего в github. Будет ли изменение зависимостей достаточно, чтобы заставить SSO использовать RestTemplate, а не OauthRestTemplate? Если это так, это может быть причиной. – Klaus
Я не представляю, как это поможет. Можете ли вы поделиться своим проектом? –