我有兴趣在我的OAuth2授权服务器中添加自定义休息端点。
我想添加一个我的UI资源服务器可以调用的注册端点,注册用户,并一次性获取一个令牌(注册时自动登录)。
我可以在两个请求中进行此操作,因为UI资源服务器具有用户的密码,但我更愿意在一个中执行此操作,因为我正在重新使用授权服务器来存储我的所有用户凭据。 / p>
我创建了一个类似
的端点@FrameworkEndpoint
class RegistrationController {
@Autowired
LocalUserAuthenticationService userDetailsService
@Autowired
TokenEndpoint tokenEndpoint
@RequestMapping(value = "/registration", method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public ResponseEntity<OAuth2AccessToken> registerUser(Principal principal,
@RequestBody @Valid RegistrationRequest registrationRequest) {
userDetailsService.register(registrationRequest.email, registrationRequest.password)
return tokenEndpoint.getAccessToken(principal, [grant_type: 'password', username: registrationRequest.email, password: registrationRequest.password])
}
}
我在我的上下文中注册
@EnableAuthorizationServer
public class AuthServerConfig {
@Bean
public RegistrationController(){
return new RegistrationController()
} ... more
}
但是,当以这种方式使用请求时,请求始终是未经授权的。它说无法找到用户。它可以解析基本的身份验证凭据,但无论在哪里查找它们都无法找到它们,尽管这个bean在此上下文中注册。
@FrameworkEndpoint的文档说
Use with @RequestMapping and all the other @Controller features (and match with a FrameworkEndpointHandlerMapping in the servlet context)
但我似乎无法破解如何实际做到这一点。或者,如果我误解了它。
如何才能正确注册,以便它像其他框架bean一样工作?