Я уже несколько дней пытаюсь подключить OneLogin OIDC к SpringBoot, но пока не могу.
Я новичок в OIDC, так что, возможно, мне не хватает чего-то базового.
Я выполнил следующие инструкции в панели администрирования OpenLogin: https://developers.onelogin.com/openid-connect/connect-to-onelogin.
Пробовал код в (основная ветка): https://github.com/onelogin/onelogin-oidc-java/tree/master/spring-boot-app
И обнаружил, что несколько дней назад в том же репозитории есть пул-реквест с совершенно другим решением (ветка karson-demo-2019-oct): https://github.com/onelogin/onelogin-oidc-java/tree/karson-demo-2019-oct/spring-boot-app
Но, к сожалению, решение не сработало.
Я использую тот же код ветки karson-demo-2019-oct только с некоторыми добавленными свойствами в файл YAML (см. Ниже)
Я настраиваю URI перенаправления в панели администрирования OneLogin как https://localhost:8081/
. Когда я перехожу к https://localhost:8081/
, нажимаю «щелкните здесь», появляется следующая ошибка:
oops! something went wrong
error: redirect_uri_mismatch
error_description: redirect_uri did not match any client's registered redirect_uris
state: bi14wv
И URL-адрес выглядит примерно так:
https://openid-connect.onelogin.com/oidc/auth?client_id=XXXXXXXXXXXXXXXXXXXXXX&redirect_uri=https://localhost:8081/login&response_type=code&scope=openid%20profile%20email&state=bi14wv
Если я добавлю https://localhost:8081/login
(с «логином» в конце) в список URI перенаправления в панели администратора OneLogin, произойдет следующее: когда я перейду к https://localhost:8081/
и нажму «щелкните здесь», появится форма OneLogin. Затем я вхожу в систему под своим пользователем, и появляется следующее сообщение:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Tue Nov 05 15:32:02 PST 2019
There was an unexpected error (type=Unauthorized, status=401).
Unauthorized
И URL-адрес этой страницы с ошибкой выглядит примерно так:
https://localhost:8081/login?code=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&state=ZZZZZ
Как видите, после указанного URI перенаправления (https://localhost:8081
) идет «логин», и я думаю, это может быть связано с тем, что index.html был написан в решении.
Поскольку портал OneLogin не принимает URI перенаправления с http (только https), мне нужно было добавить еще несколько строк в application.yml, чтобы включить SSL:
security:
oauth2:
client:
clientId: XXXXXXXXXXXXXXXXXXXXXX
clientSecret: XXXXXXXXXXXXXXXXXXXXX
accessTokenUri: https://openid-connect.onelogin.com/oidc/token
userAuthorizationUri: https://openid-connect.onelogin.com/oidc/auth
tokenName: access_token
authorizedGrantTypes: authorization_code
authenticationScheme: form
clientAuthenticationScheme: form
scope: openid,profile,email
resource:
userInfoUri: https://openid-connect.onelogin.com/oidc/me
server:
port : 8081
ssl:
key-store-type: PKCS12
key-store: classpath:XXXXXXXXXXXX
key-store-password: XXXXXXXXXXXX
key-alias: XXXXXXXXXXX
Это верно? Не могли бы вы помочь мне узнать, что мне не хватает?