我在Spring Security中使用OAuth2客户端凭据流,我可以获取由oauth_client_details表驱动的访问令牌。
问题在于,当发出令牌时,我看到userAuthentication为null,因此它将主体作为字符串返回。在这里查看OAuth2Authentication:38:
public Object getPrincipal() { return this.userAuthentication == null ? this.storedRequest.getClientId() : this.userAuthentication .getPrincipal(); }
来自文档 -
An OAuth 2 authentication token can contain two authentications: one for the client and one for the user. Since some OAuth authorization grants don't require user authentication, the user authentication may be null.
我正在使用自己的用户详细信息服务并返回UserPrincipal。这适用于表单登录和http基本没有问题。但是,使用OAuth2身份验证时,主体是字符串而不是UserDetails。