Я пытаюсь понять и внедрить поток учетных данных клиента между нашим новым сервером REST и нашим существующим клиентским приложением. Я установил spring -security OAuth2, например . Насколько я понимаю, на моем сервере теперь должен поддерживаться следующий запрос:
$ curl -X -v -d 'client_id=the_client&client_secret=secret&grant_type=client_credentials' -X POST "http://localhost:9090/oauth/token"
но я получаю
InsufficientAuthenticationException: There is no client authentication
вызванный Principal
null
здесь (spring -security code):
@FrameworkEndpoint
@RequestMapping(value = "/oauth/token")
public class TokenEndpoint extends AbstractEndpoint {
@RequestMapping
public ResponseEntity<OAuth2AccessToken> getAccessToken(Principal principal,
@RequestParam("grant_type") String grantType, @RequestParam Map<String, String> parameters) {
if (!(principal instanceof Authentication)) {
throw new InsufficientAuthenticationException(
Итак, мне нужно выполнить проверку подлинности на сервере. Но это не то, что я хочу сделать. Я хочу, чтобы два моих сервера разговаривали друг с другом, используя общий секрет. Сервер поставщика OAuth должен предоставить маркер доступа к (доверенному) клиентскому серверу по запросу, чтобы клиентский сервер мог затем использовать этот токен для доступа ко всем ресурсам REST на сервере. Это должно защищать ресурсы REST от внешнего доступа.
Позже я хочу предоставить выбранные ресурсы третьей стороне и, в конечном итоге, реализовать некоторую более четкую безопасность для связи между сервером. Но на данный момент мне нужно защитить сервер REST от внешнего доступа.
Похоже, у меня могут быть некоторые недоразумения в отношении всего потока учетных данных клиента или приложения spring -security прямо там, поэтому любое разъяснение будет принята с благодарностью.