一、该问题的重现步骤是什么?
1. BladeX2.8.1参照SocialTokenGranter新增登录模式后,导致账号密码认证方式报错
2.
org.springblade.auth.granter; org.springblade.auth.constant.AuthConstant; org.springblade.auth.service.BladeUserDetails; org.springblade.auth.utils.TokenUtil; org.springblade.core.tool.api.R; org.springblade.core.tool.support.Kv; org.springblade.core.tool.utils.Func; org.springblade.core.tool.utils.WebUtil; org.springblade.system.user.entity.User; org.springblade.system.user.entity.UserInfo; org.springblade.system.user.feign.IUserClient; org.springframework.security.authentication.AbstractAuthenticationToken; org.springframework.security.authentication.UsernamePasswordAuthenticationToken; org.springframework.security.core.Authentication; org.springframework.security.core.authority.AuthorityUtils; org.springframework.security.oauth2.common.exceptions.InvalidGrantException; org.springframework.security.oauth2.provider.*; org.springframework.security.oauth2.provider.token.AbstractTokenGranter; org.springframework.security.oauth2.provider.token.AuthorizationServerTokenServices; javax.servlet.http.HttpServletRequest; java.util.LinkedHashMap; java.util.Map; SecretFreeTokenGranter AbstractTokenGranter { String = ; IUserClient ; SecretFreeTokenGranter(AuthorizationServerTokenServices tokenServices, ClientDetailsService clientDetailsService, OAuth2RequestFactory requestFactory, IUserClient userClient) { (tokenServices, clientDetailsService, requestFactory, ); .= userClient; } OAuth2Authentication getOAuth2Authentication(ClientDetails client, TokenRequest tokenRequest) { HttpServletRequest request = WebUtil.(); String tenantId = Func.(request.getHeader(TokenUtil.), TokenUtil.); Map<String, String> parameters = LinkedHashMap<>(tokenRequest.getRequestParameters()); String account = parameters.get(); String password = parameters.get(); R<UserInfo> result = .userAuthSecretFree(tenantId, account, password); BladeUserDetails bladeUserDetails; (result.isSuccess()) { User user = result.getData().getUser(); Kv detail = result.getData().getDetail(); (user == ) { InvalidGrantException(); } bladeUserDetails = BladeUserDetails(user.getId(), tenantId, result.getData().getOauthId(), user.getName(), user.getRealName(), user.getDeptId(), user.getPostId(), user.getRoleId(), user.getUserCategory(), Func.(result.getData().getRoles()), Func.(user.getAvatar(), TokenUtil.), user.getAccount(), AuthConstant.+ user.getPassword(), detail, , , , , AuthorityUtils.(Func.(result.getData().getRoles())), user.getHisId(), user.getSign()); } { InvalidGrantException(); } Authentication userAuth = UsernamePasswordAuthenticationToken(bladeUserDetails, , bladeUserDetails.getAuthorities()); ((AbstractAuthenticationToken) userAuth).setDetails(parameters); OAuth2Request storedOAuth2Request = getRequestFactory().createOAuth2Request(client, tokenRequest); OAuth2Authentication(storedOAuth2Request, userAuth); } }
3.
<=== 401 POST: /blade-auth/oauth/token?tenantId=000000&username=admin&password=21232f297a57a5a743894a0e4a801fc3&grant_type=password&scope=all&type=account
===Headers=== transfer-encoding: chunked
===Headers=== Access-Control-Allow-Headers: X-Requested-With, Tenant-Id, Blade-Auth, Content-Type, Authorization, credential, X-XSRF-TOKEN, token, username, client, knfie4j-gateway-request, request-origion
===Headers=== Access-Control-Allow-Methods: GET,POST,PUT,DELETE,OPTIONS,HEAD
===Headers=== Access-Control-Allow-Origin: *
===Headers=== Access-Control-Expose-Headers: *
===Headers=== Access-Control-Max-Age: 18000L
===Headers=== Access-Control-Allow-Credentials: true
===Headers=== Cache-Control: no-store
===Headers=== X-XSS-Protection: 1; mode=block
===Headers=== Pragma: no-cache
===Headers=== X-Frame-Options: DENY
===Headers=== Date: Mon, 06 Sep 2021 12:31:36 GMT
===Headers=== WWW-Authenticate: Bearer error="invalid_client", error_description="Bad client credentials"
===Headers=== X-Content-Type-Options: nosniff
===Headers=== Content-Type: application/json;charset=UTF-8
===Headers=== connection: close
================ Gateway Response End =================
二、你期待的结果是什么?实际看到的又是什么?
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
扫一扫访问 Blade技术社区 移动端