Настройка соотвСтствия OpenID Connect

ОглавлСниС

Настройка Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²

Для настройки соотвСтствия Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²:

  1. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ β€œΠ‘ΠΎΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²β€œ.
  2. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ сопоставлСниС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ сопоставлСниС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²".
  3. Π—Π°Π΄Π°ΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ сопоставлСния:
    1. Ѐамилия – Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ хранится фамилия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ;
    2. Имя – Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ хранится имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ;
    3. ΠžΡ‚Ρ‡Π΅ΡΡ‚Π²ΠΎ – Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ хранится отчСство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ;
    4. Email – Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ хранится email ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
    5. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ – ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для разграничСния ΠΏΡ€Π°Π² доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описаниС см. Π²Β Π Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π² доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ
  4. Для сохранСния настроСк Π½Π°ΠΆΠΌΠΈΡ‚Π΅ β€œΠ‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒβ€œ.

Если сопоставлСниС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ, Ρ‚ΠΎ ΠΏΡ€ΠΈ создании ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Ѐамилия Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° ΠΈΠ· Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° для "UserName claim" Π½Π° вкладкС Настройка внСшнСй Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Настройка Ρ€ΠΎΠ»Π΅ΠΉ

Для настройки соотвСтствия Ρ€ΠΎΠ»Π΅ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π²ΠΎ внСшнСм ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π΅ ΠΈ ролям Π² Visiology:

  1. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒΒ  β€œΠ‘ΠΎΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€ΠΎΠ»Π΅ΠΉβ€œ.

  2. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ сопоставлСниС Ρ€ΠΎΠ»Π΅ΠΉ".
  3. Π—Π°Π΄Π°ΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ "JMESPath", ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ Ρ€ΠΎΠ»ΠΈ Π²ΠΎ внСшнСм ΠŸΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π΅. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ значСния Ρ€ΠΎΠ»Π΅ΠΉ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΈΠ· этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

  4. НС ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΡƒΠΆΠ΅ установлСнныС Ρ€ΠΎΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ:
    1. Ссли опция Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π°, Ρ‚ΠΎ Π² случаС удалСния Ρ€ΠΎΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π²ΠΎ внСшнСм ΠŸΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π΅, ΠΏΡ€ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Visiology, удалСнная Ρ€ΠΎΠ»ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ·Π²Π°Π½Π° ΠΈΠ· Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… Ρ€Π°Π½Π΅Π΅ ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Ρ€ΠΎΠ»Π΅ΠΉ;
    2. Ссли опция ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π°,Β Ρ‚ΠΎ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Ρ€ΠΎΠ»ΠΈ Π²ΠΎ внСшнСм ΠŸΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅.
  5. Для сохранСния настроСк Π½Π°ΠΆΠΌΠΈΡ‚Π΅ β€œΠ‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒβ€œ.

Если БопоставлСниС Ρ€ΠΎΠ»Π΅ΠΉ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ, Ρ‚ΠΎ ΠΏΡ€ΠΈ создании ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ· внСшнСго ΠŸΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π°, Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π±ΡƒΠ΄Π΅Ρ‚ присвоСна Ρ€ΠΎΠ»ΡŒ "ВсС Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ".


Если Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ β€œΠ’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ сопоставлСниС Ρ€ΠΎΠ»Π΅ΠΉβ€œ, Ρ‚ΠΎ ΠΏΡ€ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π΅Π³ΠΎ Ρ€ΠΎΠ»ΠΈ Π² Visiology Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ согласно с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ настройкам сопоставлСния.Β 

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ сопоставлСния Ρ€ΠΎΠ»Π΅ΠΉ

Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ массив с ролями ΠΈΠ· Ρ‚ΠΎΠΊΠ΅Π½Π°:

{
   "resource_access":{
      "test":{
         "roles":[
            "foo",
            "fooo"
         ]
      }
   }
}

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1

Для сопоставлСния Ρ€ΠΎΠ»Π΅ΠΉ ΠΈΠ· Ρ‚ΠΎΠΊΠ΅Π½Π° с ролями Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ввСсти ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² ΠΏΠΎΠ»Π΅Β JMESPath:

resource_access.test.roles

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ:

[ "foo", "fooo" ]

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Ρ€ΠΎΠ»ΠΈ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈ Π² ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ наимСнования.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2

Если Π² ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π΅ присутствуСт опрСдСлённая Ρ€ΠΎΠ»ΡŒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ произвСсти ΠΌΠ°ΠΏΠΈΠ½Π³. Для этого Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

[contains(resource_access.test.roles, 'foo') && 'bar', contains(resource_access.test.roles, 'fooo') && 'barr']

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ:

[ "bar", "barr" ]Β 

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3

Если Π½ΡƒΠΆΠ½ΠΎ ΠΊ массиву Ρ€ΠΎΠ»Π΅ΠΉ ΠΈΠ· ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ свою Ρ€ΠΎΠ»ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ эту Ρ€ΠΎΠ»ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ всСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ввСсти ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

[[resource_access.test.roles, 'bar']].map(&[], @)[0]

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ:

[ "foo", "fooo", "bar" ]