ΠΡΠΈΠΌΠ΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π΄Π»Ρ Keycloak
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΠΎΠΉ identity-ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅Ρ. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΡΡΠΎΠΈΡΡ Keycloak Π΄Π»Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ.
ΠΠ»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Keycloak Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ:
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ Keycloak Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
sudo docker run --name keycloak -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=password -p 8080:8080 jboss/keycloak
Π³Π΄Π΅KEYCLOAK_USER
β Π»ΠΎΠ³ΠΈΠ½, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²Ρ ΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° Π² Keycloak.KEYCLOAK_PASSWORD
β ΠΏΠ°ΡΠΎΠ»Ρ Π΄Π»Ρ Π²Ρ ΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° Π² Keycloak.8080
β ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΏΠΎΡΡ Keycloak Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ HTTP. ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ HTTPS ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΡΡ8443
.ΠΡΠΊΡΠΎΠΉΡΠ΅ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° Keycloak ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ:
{Π΄ΠΎΠΌΠ΅Π½_Keycloak}/auth/admin
ΠΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Visiology Π² ΠΏΠ°Π½Π΅Π»ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡ ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ > ΠΠ²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ > OpenID Connect > ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ:
Β
ΠΠ° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠΎΠ»Ρ (Π·Π²Π΅Π·Π΄ΠΎΡΠΊΠΎΠΉ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ):
ΠΠΎΠ»Π΅ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
UserName claim* | ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π»ΡΠ±ΠΎΠ΅ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· ΡΠΎΠΊΠ΅Π½Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, |
Repsonse type* | ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠΎΡΡΡΠΏΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: |
Authentication scheme* | Π‘Ρ Π΅ΠΌΠ° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. |
Authority* |
|
Client id* | ΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈΠ· Keycloak. |
Client secret | Π‘ΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΡΠ΅ΠΊΡΠ΅Ρ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π² Keycloak Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Credentials ΠΈ Π²ΡΡΠ°Π²ΡΡΠ΅ Π² ΡΡΠΎ ΠΏΠΎΠ»Π΅. |
Callback path* | ΠΠ΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΉ ΠΏΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. |
Scope* | Π‘ΠΏΠΈΡΠΎΠΊΒ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠΉ. |
Resourse | ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ΅ΡΡΡΡΠ°, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΠΎΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ. |
Claims source | ΠΠΎΡΡΡΠΏΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
|
ΠΡΠΈΠΌΠ΅ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΎΡΠ²Π΅ΡΠ° (ΠΏΠΎΠ»Π΅ Response type)
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· Implicit Flow (id_token)
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π² Keycloak Β | ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Visiology Β |
---|
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· Implicit Flow ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ userinfo endpoint
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Claims source
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π² Keycloak | ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Visiology Β |
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· Authorization Π‘ode (code)
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π² Keycloak Β | ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Visiology Β |
---|
ΠΡΠΈΠΌΠ΅ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΠΏΠΎΠ»Π΅ Claims source
ΠΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΏΠΎΠ»Π΅ Claims source, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΎΠΏΡΠΈΡ Π² Keycloak Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ Mappers ΠΊΠ»ΠΈΠ΅Π½ΡΠ°:
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ
userinfo endpoint
Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠΈΡ Add to userinfo.ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ
id_token
Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠΈΡ Add to ID token.ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ
access_token
Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠΈΡ Add to access token.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ id_token
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π² Keycloak Β | ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Visiology Β |
---|
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ userinfo endpoint
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π² Keycloak | ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Visiology |
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ access_token
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π² Keycloak | ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Visiology |
ΠΡΠ»ΠΈ Π²Ρ Π½Π°ΡΡΡΠΎΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π½Π΅Π²Π΅ΡΠ½ΠΎ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΊΠ»ΡΡΠΈΡΡ, Π° Π·Π°ΡΠ΅ΠΌ Π²ΠΊΠ»ΡΡΠΈΡΡ Π²Π½Π΅ΡΠ½ΡΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΊΡΠΈΠΏΡΠ°.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
ID=$(sudo docker ps | grep visiology_admin | awk '{print $1}')
sudo docker exec -it $ID sh
node administrator-tools/change-auth-type/index.js
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅