Объясните «аутентификацию на основе утверждений» 5-летнему - PullRequest
182 голосов
/ 22 июля 2011

Ну, не совсем 5-летнему, но, пожалуйста, избегайте модных слов и предприятий, если возможно.

Аутентификация на основе утверждений, кажется, сейчас в моде, но я не смог найти простой ипрактическое объяснение того, что это на самом деле, как оно отличается от того, что у нас есть сейчас (я предполагаю, «то, что мы имеем сейчас», для аутентификации на основе ролей), каковы преимущества его использования и т. д.

Ответы [ 6 ]

206 голосов
/ 27 июля 2011

@ Marnix имеет довольно хороший ответ, но отходит от технического аспекта:

Аутентификация на основе утверждений заключается в определении того, кому вы доверяете, чтобы предоставить вам точную информацию о личности, и только когда-либо ее использовать.информация предоставлена.Мой пример перехода - в баре.Представьте на мгновение, что вы хотите получить пиво в баре.Теоретически, бармен должен попросить вас подтвердить возраст.Как ты это докажешь?Ну, один из вариантов - попросить бармена разрезать вас пополам и посчитать количество колец, но с этим могут быть некоторые проблемы.Другой вариант - записать свой день рождения на листе бумаги, который бармен одобряет или не одобряет.Третий вариант - пойти в правительство, получить удостоверение личности, а затем предъявить удостоверение бармену.

Некоторые могут смеяться над идеей просто написать свой день рождения на листе бумаги, но эточто происходит, когда вы аутентифицируете пользователей внутри самого приложения, потому что бармен (или ваше приложение) может доверять листу бумаги.Однако мы доверяем утверждению правительства о том, что день рождения на удостоверении личности действителен, и удостоверение личности предназначено для человека, запрашивающего напиток.Для всех намерений и целей бармену (или приложению) на самом деле все равно, как аутентификация произошла из-за доверия.Бармен ничего не знает о вас, кроме даты вашего рождения, потому что это все, что нужно знать бармену.Теперь бармен может хранить информацию, которая, по его мнению, важна для него, например, ваш любимый напиток, но правительству все равно (поскольку это не авторитетный источник), поэтому бармен хранит эту информацию по-своему.

Ключ к CBA - «кто является авторитетным источником идентичности?»

128 голосов
/ 23 июля 2011

(Это мое личное мнение, другие могут отличаться. Пожалуйста, опубликуйте другие точки зрения как отдельные ответы.)

Идентификация / аутентификация / авторизация на основе утверждений о разделении обслуживанияавторизации пользователей и входа пользователя из (веб) приложения, превратив аутентификацию / авторизацию в отдельный (веб) сервис.

Так, например, когда я перехожу к веб-приложению с поддержкой утверждений дляв первый раз он перенаправит мой браузер на «сервис входа», которому он доверяет.Я буду аутентифицироваться в этой службе (используя аутентификацию Windows, смарт-карту или что-то еще), и в ответ она отправляет обратно «токен», который браузер отправляет обратно в веб-приложение.Теперь веб-приложение проверяет, что токен имеет цифровую подпись его доверенной службы входа в систему, а затем просматривает «утверждения» в токене.Основываясь исключительно на этих утверждениях, приложение решает, какие функциональные возможности предлагаются пользователю.

Заявки почти всегда включают идентификацию пользователя, часто есть также утверждения, связанные с авторизацией («этот пользователь может просматривать данные о продажах, ноне обновлять его »), а иногда и другую информацию (« размер обуви = 42 »).

Ключевым моментом является то, что приложение не знает и не заботится о том, как пользователь прошел проверку подлинности, и как проходят авторизации.администрируемый: он использует только информацию из утверждений в подписанном токене, чтобы определить, кто пользователь и / или что пользователь может видеть или делать, и / или любую другую информацию о пользователе.

(Да, я предполагаю, что довольно умный и хорошо осведомленный пятилетний ребенок здесь: -)

38 голосов
/ 13 января 2015

Следующий пример из реальной жизни взят из Руководства по идентификации и управлению доступом на основе утверждений (2-е издание) .

Очень знакомая аналогия - протокол аутентификации, который вы используете каждый время посещения аэропорта . Вы не можете просто подойти к воротам и предъявите свой паспорт или водительские права. Вместо этого вы должны сначала регистрация на кассе. Здесь вы предоставляете любые учетные данные имеет смысл. Если вы едете за границу, вы показываете свой паспорт. За внутренние рейсы, вы предоставляете свои водительские права. После проверки что идентификатор вашей фотографии соответствует вашему лицу ( аутентификация ), агент проверяет ваш рейс и подтверждает, что вы оплатили билет ( разрешение ). При условии, что все в порядке, вы получаете посадочный талон что вы берете к воротам.

A посадочный талон очень информативен. Ворота агенты знают ваше имя и номер часто летающего лица (аутентификация и персонализация), номер рейса и приоритет места (разрешение) и, возможно, даже больше. Ворота агенты имеют все, что им нужно для эффективной работы.

Существует также Специальная информация о посадочном талоне. Кодируется в баре код и / или магнитная полоса на спине. Эта информация (такая как регистрационный номер) подтверждает, что пропуск был выдан авиакомпания и не является подделкой.

По сути, посадочный талон является подписанным комплект претензий, выдвинутых авиакомпанией о вас . В нем говорится, что вы разрешено сесть на определенный рейс в определенное время и сидеть в конкретное место. Конечно, агентам не нужно думать очень глубоко об этом. Они просто подтверждают ваш посадочный талон, читают заявки на нем, и пусть вы садитесь в самолет.

Также важно отметить, что может быть несколько способов получения подписанного набора требований это ваш посадочный талон. Вы можете пойти в кассу на аэропорт, или вы можете использовать веб-сайт авиакомпании и распечатать посадочный талон на дом. Агенты ворот, садящиеся на рейс, не заботятся как был создан посадочный талон; они не заботятся, какой эмитент вы используется до тех пор, пока ему доверяет авиакомпания. Они только заботятся, что это это подлинный набор требований, которые дают вам разрешение на участие в самолет.

В программном обеспечении этот пакет утверждений называется токеном безопасности . каждый токен безопасности подписан эмитентом , который его создал. на основе утверждений приложение считает пользователей аутентифицированными, если они представляют подписанный токен безопасности от доверенного эмитента .

18 голосов
/ 30 июля 2013

Пятилетний мальчик попросит его предположить, что он перешел в новую школу, подписав заявление его родителей. После одобрения со стороны руководства школы для его заявления, он получает карточку доступа, которая содержит всю нижеприведенную информацию, которую мы можем называть ПРЕТЕНЗИЯМИ, чтобы войти в школу.

  1. ИМЯ МАЛЬЧИКА - ЛПП.
  2. ШКОЛЬНОЕ ИМЯ МОНТИССОРИ ВЫСШАЯ ШКОЛА
  3. КЛАСС 8-го Сорта

В первый день своей школы, когда он шел в школу, он сильно ударил свою карточку доступа, и ворота открылись, значит, он был ЗАЯВЛЕН как один из людей из школы. Таким образом, он является АУТЕНТИЧНЫМ ЧЕЛОВЕКОМ, чтобы войти в школу.

Добравшись до своего класса, он использовал карточку доступа для входа в каждый класс, но в 8-м Стандартном классе двери открылись, как он утверждал, что он из 8-го Стандарта.

В школе он только уполномочен входить в свой класс, так как он сейчас изучает 8-й стандарт. И если он попытается войти в 6-й Стандарт, школьный учитель НЕ РАЗРЕШИТ его.

9 голосов
/ 18 апреля 2017

настолько нетехнически, насколько это возможно:

Если бы вы описали что-либо о том, кто вы есть и что вам было разрешено видеть или делать, каждая из этих вещей была бы чем-то, на что вы «претендовали»быть правдой, и, таким образом, каждая «вещь» в этом списке будет «требованием».

Каждый раз, когда вы говорите кому-то что-то о себе или «заявляете», что вам разрешено что-то видеть или делать, вы вручаете ихваш список претензий.Они будут проверять с полномочиями, что ваши претензии верны, и если они верны, они будут верить чему-либо в этом списке претензий.Так что, если вы утверждаете, что вы Брэд Питт, в вашем списке утверждений говорится, что вы Брэд Питт, и это было подтверждено властью, что все ваши утверждения верны - тогда они будут верить, что вы Брэд Питт вместе счто-нибудь еще в этом списке.

Требование : то, что вы утверждаете, чтобы быть правдой.Это может быть часть информации или описание разрешения, которое вы утверждаете получить.Система, в которую вы предъявляете свои претензии, должна только понимать, что такое претензия / означает, а также иметь возможность проверять ее в уполномоченном органе.

Полномочия : Система, которая объединяет ваш список претензий и подписывает его, который в основном гласит: "По моему праву, все в этом списке верно".До тех пор, пока система, считывающая утверждения, может с правами проверять, что подпись верна, все в списке утверждений будет считаться подлинным и истинным.

Кроме того, давайте не будем называть это «проверкой подлинности на основе утверждений»вместо этого давайте назовем это «заявка на основе идентичности».

Чуть более технически:

Итак, теперь в этом процессе вы аутентифицируете , используя какой-то механизм (имя пользователя / пароль, секрет клиента, сертификати т. д.) и это дает вам знак, который доказывает, что вы являетесь тем, кем вы себя называете.Затем вы обмениваете этот токен доступа на идентификационный токен.Этот процесс будет использовать вашу личность для поиска и создания списка претензий, подписать его, а затем вернуть вам идентификационный токен, содержащий все ваши претензии.

В качестве шага авторизация , в зависимости ото том, как это реализовано, ресурс посмотрит на ваш токен идентификатора (заявки) и затем проверит, есть ли у вас необходимые заявки для доступа к этому ресурсу.

Так, например, если ресурс «CastleBlack / CommandersTower» говоритчто «вы должны иметь доступ к черному замку и быть командиром лорда, тогда он рассмотрит ваш список претензий, чтобы увидеть, истинны ли обе эти вещи.

Как видите,« претензии »могут бытьчто угодно. Это может быть роль, это может быть фактом, это может быть флаг. Это просто список пар ключ-значение, а «значение» является необязательным. Иногда нужно просто посмотреть, существует ли утверждение:

claims : [
    {"type": "name", "value": "Jon Snow"},
    {"type": "home", "value": "Winterfell, The North, Westeros"},   
    {"type": "email", "value": "jon@nightswatch-veterans.org"},
    {"type": "role", "value": "veteran;deserter;"},
    {"type": "department", "value": "none"},    
    {"type": "allowEntry", "value": "true"},
    {"type": "access", "value": "castleblack;eastwatch;"}
]

Так что, если Джон войдет в систему и попытается получить доступ к ресурсу, описанному выше, ему будет отказано, потому что, хотя он является тем, кем, по его словам, он является, и у него есть доступ к черному замку,он больше не является командиром лорда, и при этом он не имеет явного доступа к башне командира, и, таким образом, не может неявно войти в башню командира лорда.

В частности, «CastleBlack», вероятно, будет [большей] областью действия, и каждыйОбласть будет определенным разрешением, но это другое обсуждение.

То, как каждое приложение имеет дело с доступом, будет отличаться, но для этого будут использоваться претензии.

5 голосов
/ 19 мая 2014

Учитывая, что утверждение - это атрибут, который сообщает вам что-то о пользователе (имя, возраст, этническая принадлежность и т. Д.), С которым вы работаете против службы маркеров безопасности, чтобы проверить эти утверждения, а также использовать их для авторизации помимо проверки подлинности.

Следующая выдержка взята из Википедии (http://en.wikipedia.org/wiki/Claims-based_identity), и это лучшая аналогия, которую я нашел до сих пор

"Чтобы лучше понять концепцию службы маркеров безопасности, рассмотрим аналогию ночного клуба со швейцаром. Швейцар хочет предотвратить вход несовершеннолетних посетителей. Чтобы облегчить это, он просит патрона представить водительские права, карточка медицинского страхования или другое удостоверение личности (токен), выданное доверенной третьей стороной (служба токен безопасности), например, областным или государственным отделом лицензирования транспортных средств, отделом здравоохранения или страховой компанией. Таким образом, ночной клуб освобождается от ответственности определение возраста патрона. Он должен доверять только выдающему органу (и, конечно, самому оценить подлинность представленного токена). После выполнения этих двух шагов ночной клуб успешно аутентифицировал патрона в отношении утверждения, что он или она совершеннолетнего пьющего возраста.

Продолжая аналогию, в ночном клубе может быть система членства, а некоторые члены могут быть постоянными или VIP. Швейцар может попросить другой жетон, членскую карточку, которая может сделать еще одно заявление; что участник VIP. В этом случае доверенным органом выдачи токена, вероятно, будет сам клуб. Если членская карта заявляет о том, что покровитель является VIP, клуб может соответствующим образом отреагировать, переведя аутентифицированную заявку на членство в VIP в такое разрешение, как разрешению патрону сидеть в эксклюзивном лаундже и получать бесплатные напитки ».

...