Spring boot + oauth2 + HttpClientErrorException 401 Несанкционированный

Я использую учебник весенней загрузки в качестве основы ( https://spring.io/guides/tutorials/spring-boot-oauth2/) для тестирования Oauth2.

Однако мой сервер аутентификации не Facebook, это Netiq Access Manager (NAM). Мне удалось перенаправить на страницу входа в NAM, но после входа в систему я получаю следующую ошибку:

Ошибка Whitelabel

Журнал показывает:

o.s.b.a.s.o.r.UserInfoTokenServices      : Could not fetch user details: class org.springframework.web.client.HttpClientErrorException, 401 Unauthorized

Это проект:

Структура проекта

Код приложения:

package com.example.springoauthdemo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso;

@SpringBootApplication
@EnableOAuth2Sso
public class SocialApplication {

    public static void main(String[] args) {
        SpringApplication.run(SocialApplication.class, args);
    }
}

Application.yml

security:
  oauth2:
    client:
      clientId: 55bb61f1-4384-4939-9cd0-fa7d76af9a0c
      clientSecret: fdUjegFlCJjnD778RUSuS4SqMRey4IKVDOkadi4hjN6YbhC1xCInxoxobf-a-p-po8rt1wfZM2BPqJHpcZ-FGs
      accessTokenUri: https://nam.example.com/nidp/oauth/nam/token
      userAuthorizationUri: https://nam.example.com/nidp/oauth/nam/authz
      tokenName: oauth_token
      authenticationScheme: query
      clientAuthenticationScheme: form
    resource:
      userInfoUri: https://localhost:8443/index.html
      #userInfoUri: https://nam.example.com/nidp/oauth/nam/userinfo

server:
  port: 8443
  ssl:
    enabled: true
    key-alias: tomcat-localhost
    key-password: changeit
    key-store: classpath:keystore.jks
    key-store-provider: SUN
    key-store-type: JKS
    key-store-password: changeit

Насколько я знаю, используя этот поток Oauth2 в качестве примера, шаги 1, 2 и 3, кажется, в порядке, поэтому проблема заключается в попытке получить токен доступа?

Есть идеи?

Заранее спасибо!

0 ответов

Когда вы аутентифицированы и у вас есть пользователь, вы можете проверить его по userInfoUri, который возвращает объект Principal в oauth.

Вы устанавливаете это значение на HTML:

resource:
      userInfoUri: https://localhost:8443/index.html

Это должно быть что-то вроде:

resource:
      userInfoUri: https://localhost:8443/userinfo

И этот ответ службы должен будет возвращать что-то вроде:

@RequestMapping("/userinfo")
    Principal getUser(Principal user) {
        return user;
    }
Другие вопросы по тегам