为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

墨色风雨 2022-06-30 10:18:20
我的应用程序中出现错误“未经授权”的问题。我正在使用 Spring Security 和 oauth2。我的客户和用户存储在数据库中。当我开始使用数据库中的客户端时,PostMan 中出现错误 401。客户端正在保存在数据库中,但是当我想从 localhost:8080/oauth/token 获取令牌访问权限时仍然出现错误。以下是我的来源:授权服务器配置:公共类 AuthorizationServerConfig 扩展 AuthorizationServerConfigurerAdapter {@Autowiredprivate AuthenticationManager authenticationManager;@Autowiredprivate TokenStore tokenStore;private CustomClientDetailsService customClientDetailsService;@BeanPasswordEncoder passwordEncoder() {    return PasswordEncoderFactories.createDelegatingPasswordEncoder();}@Overridepublic void configure(AuthorizationServerSecurityConfigurer security) throws Exception {    security.tokenKeyAccess("permitAll()")            .checkTokenAccess("isAuthenticated()");}@Overridepublic void configure(ClientDetailsServiceConfigurer clients) throws Exception {    clients.withClientDetails(customClientDetailsService);}@Overridepublic void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {    endpoints            .tokenStore(tokenStore)            .authenticationManager(authenticationManager);}}这是我的 CustomClientDetails :公共类 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;}@Overridepublic String getClientId() {    return clients.getClientId();}@Overridepublic Set<String> getResourceIds() {    final Set<String> resourcesIds = new HashSet<String>();    resourcesIds.add(clients.getResourceIds());    return resourcesIds;}@Overridepublic boolean isSecretRequired() {    return true;}@Overridepublic String getClientSecret() {    return clients.getClientSecret();}@Overridepublic boolean isScoped() {    return true;}@Overridepublic Set<String> getScope() {    final Set<String> scopes = new HashSet<String>();    scopes.add(clients.getScope());    return scopes;}
查看完整描述

2 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

您应该在 postman 中提供 aclient_id和 a client_secret,在授权部分,您可以设置 Basic Auth。

//img1.sycdn.imooc.com//62bd08240001d77e10740336.jpg

username字段中,输入您的client_id和 在 中password,输入您的client_secret.



查看完整回答
反对 回复 2022-06-30
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

“/oauth/token”中的“未经授权”可能意味着您没有HTTP Basic Auth在请求标头中提供凭据。据我所知,该端点默认情况下使用存储在oauth_client_details实体中的登录名和密码进行保护。查找client_id+client_secret对并将其提供给 Postman 并使用 Authorization->Basic Auth 设置。



查看完整回答
反对 回复 2022-06-30
  • 2 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信