Spring OAuth2 确定主体是 oauth2_client 还是基本用户
Spring OAuth2 determine if principal is oauth2_client or basic user
我有一个 ResourceServer 应用程序 (@EnableResourceServer
) 连接到 AuthorizationServer (@EnableAuthorizationServer
)。
我想支持两种资助类型:
- 授权码
- 客户端凭据
两者都正常工作,但我如何区分 Principal
是 基本用户 (使用授权代码流)还是 客户端 (使用客户端凭据)?
如果不能直接实现,您认为我应该创建一个特定的 role/authority 或范围(哪个更好?)来确定 Principal
何时是客户端?
完成身份验证后,您应该在 SecurityContext 中设置 org.springframework.security.oauth2.provider.OAuth2Authentication 实例,其中包含经过身份验证的用户和他们正在使用的客户端的详细信息。
这有一个 isClientOnly() 方法,如果使用客户端凭据授权,该方法将 return 为真。
如果您启用了 OAuth2 表达式,您还可以在 @PreAuthorize 标记中进行检查:
@PreAuthorize("#oauth2.isClient")
我有一个 ResourceServer 应用程序 (@EnableResourceServer
) 连接到 AuthorizationServer (@EnableAuthorizationServer
)。
我想支持两种资助类型:
- 授权码
- 客户端凭据
两者都正常工作,但我如何区分 Principal
是 基本用户 (使用授权代码流)还是 客户端 (使用客户端凭据)?
如果不能直接实现,您认为我应该创建一个特定的 role/authority 或范围(哪个更好?)来确定 Principal
何时是客户端?
完成身份验证后,您应该在 SecurityContext 中设置 org.springframework.security.oauth2.provider.OAuth2Authentication 实例,其中包含经过身份验证的用户和他们正在使用的客户端的详细信息。
这有一个 isClientOnly() 方法,如果使用客户端凭据授权,该方法将 return 为真。 如果您启用了 OAuth2 表达式,您还可以在 @PreAuthorize 标记中进行检查:
@PreAuthorize("#oauth2.isClient")