После входа в Azure Active Directory я возвращаю 401 из POST в https://login.microsoftonline.com/common/oauth2/token
.
Я зарегистрировал свое приложение в AD и дал ему разрешения user.read
и ....Я изменил манифест и установил oauth2AllowImplicitFlow
на true
.
Идентификатор клиента, идентификатор клиента и секрет клиента правильно заполнены. Я попытался изменить их на двойную проверку и изменил на правильные.
Конфигурация веб-безопасности следующая, это из Microsoft / azure-spring-boot репозитория.
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
class AADOAuth2LoginSecurityConfig(private val oidcUserService: OAuth2UserService<OidcUserRequest, OidcUser>) : WebSecurityConfigurerAdapter() {
override fun configure(http: HttpSecurity) {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.oauth2Login()
.userInfoEndpoint()
.oidcUserService(oidcUserService)
}
}
Если я клонирую образец и заполняютребуемая конфигурация в application.properties
все отлично работает.Если я начну новый проект, добавлю безопасность, Интернет, Azure Active Directory, Spring-Security-Oauth2-клиента и Spring-Security-OAuth2-Jose я получаю 401.
Используются версииследующий
Spring Boot 2.1.0.RELEASE
Версия Azure Spring Boot 2.0.7
application.properties
spring.security.oauth2.client.registration.azure.client-id=xxxxxx
spring.security.oauth2.client.registration.azure.client-secret=xxxxxx
azure.activedirectory.tenant-id=xxxxxx
azure.activedirectory.active-directory-groups=Users
После пролистывания журналов отладки единственное различие, которое я вижу между примером и новым проектом, состоит в том, что аутентификация HTTP Basic отличается.URL старой версии кодирует пароль (он содержит небезопасные символы), а затем base64 кодирует его как целое base64(clientId:urlEncode(clientSecret))
.Новая версия не делает это, может ли это быть реальной проблемой?Если так, как я могу решить это, так как это изменение в библиотеке.