gpt4 book ai didi

java - 来自数据库的未经授权的错误 oauth2 客户端

转载 作者:行者123 更新时间:2023-12-02 10:14:15 24 4
gpt4 key购买 nike

我的应用程序中出现“未经授权”错误。我正在使用 Spring Security 和 oauth2。我的客户和用户存储在数据库中。当我开始使用数据库中的客户端时,我在 PostMan 中遇到错误 401。客户端正在保存在数据库中,但当我想从 localhost:8080/oauth/token 获取 token 访问权限时仍然出现错误。以下是我的来源:

授权服务器配置:

公共(public)类 AuthorizationServerConfig 扩展了 AuthorizationServerConfigurerAdapter {

@Autowired
private AuthenticationManager authenticationManager;



@Autowired
private TokenStore tokenStore;


private CustomClientDetailsService customClientDetailsService;



@Bean
PasswordEncoder passwordEncoder() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}

@Override
public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
security.tokenKeyAccess("permitAll()")
.checkTokenAccess("isAuthenticated()");
}

@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.withClientDetails(customClientDetailsService);

}


@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints
.tokenStore(tokenStore)
.authenticationManager(authenticationManager);
}

}

这是我的 CustomClientDetails:

公共(public)类 CustomClientDetails 实现 ClientDetails {

final static Logger log = LoggerFactory.getLogger(CustomClientDetailsService.class);

private static final long serialVersionUID = 6602529451366778198L;

private Clients clients;

public CustomClientDetails(final Clients clients){
this.clients = clients;
}

@Override
public String getClientId() {
return clients.getClientId();
}

@Override
public Set<String> getResourceIds() {
final Set<String> resourcesIds = new HashSet<String>();
resourcesIds.add(clients.getResourceIds());
return resourcesIds;
}

@Override
public boolean isSecretRequired() {
return true;
}

@Override
public String getClientSecret() {
return clients.getClientSecret();
}

@Override
public boolean isScoped() {
return true;
}

@Override
public Set<String> getScope() {
final Set<String> scopes = new HashSet<String>();
scopes.add(clients.getScope());
return scopes;
}

@Override
public Set<String> getAuthorizedGrantTypes() {
final Set<String> authorizedGrantTypes = new HashSet<String>();
authorizedGrantTypes.add(clients.getAuthorizedGrantTypes());
return authorizedGrantTypes;

}

@Override
public Set<String> getRegisteredRedirectUri() {
final Set<String> registeredRedirectUris = new HashSet<String>();
registeredRedirectUris.add(clients.getWebServerRedirectUri());
return registeredRedirectUris;
}

@Override
public Collection<GrantedAuthority> getAuthorities() {
final Set<GrantedAuthority> authorities = new HashSet<GrantedAuthority>();
authorities.add(new SimpleGrantedAuthority(clients.getAuthorities()));
return authorities;
}

@Override
public Integer getAccessTokenValiditySeconds() {
return clients.getAccessTokenValidity();
}

@Override
public Integer getRefreshTokenValiditySeconds() {
return clients.getRefreshTokenValidity();
}

@Override
public boolean isAutoApprove(String s) {
return false;
}

@Override
public Map<String, Object> getAdditionalInformation() {
final Set<String> additionalInformation = new HashSet<String>();
additionalInformation.add(clients.getAdditionalInformation());
return null;
}

这是一个 CustomClientDetailsS​​ervice :

公共(public)类 CustomClientDetailsS​​ervice 实现 ClientDetailsS​​ervice {

@Autowired
private ClientsRepository clientsRepository;

@Autowired
private CustomClientDetails customClientDetails;

@Override
public ClientDetails loadClientByClientId(String clientId) throws ClientRegistrationException {

Clients client = clientsRepository.findByClientId(clientId);

final CustomClientDetails customClientDetails = new CustomClientDetails(client);
return customClientDetails;
}

来自 PostMan 的错误:

{ "时间戳": "2019-02-20T09:32:15.479+0000", “状态”:401, "error": "未经授权", "message": "未经授权", “路径”:“/oauth/ token ”}

最佳答案

您应该在postman中提供一个client_id和一个client_secret,在授权部分,您可以设置基本身份验证。 enter image description here

用户名字段中输入您的client_id,并在密码中输入您的client_secret

关于java - 来自数据库的未经授权的错误 oauth2 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54783591/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com