我正在尝试使用邮递员从Keycloak服务器获取访问令牌。
我一直遵循此link,并按照本教程中的说明创建了领域,用户,角色凭证。
但是当我发出请求时,它会无限期地继续进行,而不会返回任何内容。
编辑: 我也尝试将Grant_type设置为“ password”和“ client_credentials”。但没有运气。
答案 0 :(得分:0)
这是从PostMan获取令牌的正确方法
https://<IP ADDRESS>:<PORT>/auth/realms/master/protocol/openid-connect/token
在“正文”部分中,选择x-www-form-urlencoded
{
"username": "username",
"password": "password",
"client_id": "APP-NAME",
"grant_type": "password",
"client_secret": "462fe347-d47f-4365-94ee-6aefff994ef2"
}
If you want to from through `curl` command then use below command
curl -X POST -k -H 'Content-Type: application/x-www-form-urlencoded' -i 'https://<IP>:<PORT>/auth/realms/master/protocol/openid-connect/token' --data 'username=username&password=password&client_id=CLIENT-ID&grant_type=password&client_secret=462fe347-d47f-4365-94ee-6aefff994ef2'
**编辑**
正如在最后找到的解决方案中在SO聊天中与OP讨论的那样,OP正在使用临时密码创建用户,因此每次用户登录时都必须更改密码,这就是其失败原因。在OP更改了禁用选项之后,它开始工作
答案 1 :(得分:0)
在此示例中,您不能使用 client_credentials ,因为这里没有客户密码,您可以阅读有关Client Credentials Grant的信息。它还主要用于服务器到服务器的通信。 您不应该使用密码授予,但是我想出于示例的原因。 Password Grant
问题是您如何配置Spring-boot应用程序? 这是本教程中提到的application.properties:
keycloak.realm=SpringBootKeycloak
keycloak.auth-server-url=http://localhost:8080/auth/
keycloak.resource=login-app
keycloak.public-client=true
这就是我的SecurityConfig的样子
@Configuration
@EnableWebSecurity
@ComponentScan(
basePackageClasses = KeycloakSecurityComponents.class,
excludeFilters = @ComponentScan.Filter(type = FilterType.REGEX, pattern = "org.keycloak.adapters.springsecurity.management.HttpSessionManager"))
public class SecurityConfig extends KeycloakWebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
KeycloakAuthenticationProvider keycloakAuthenticationProvider = keycloakAuthenticationProvider();
keycloakAuthenticationProvider.setGrantedAuthoritiesMapper(new SimpleAuthorityMapper());
auth.authenticationProvider(keycloakAuthenticationProvider);
}
@Override
protected SessionAuthenticationStrategy sessionAuthenticationStrategy() {
return new RegisterSessionAuthenticationStrategy(new SessionRegistryImpl());
}
@Bean
public KeycloakSpringBootConfigResolver KeycloakConfigResolver() {
return new KeycloakSpringBootConfigResolver();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
super.configure(http);
http.authorizeRequests()
.antMatchers("/*")
.hasRole("user").anyRequest().permitAll();
}
}