Есть ли причина, по которой разработчики программного обеспечения не выносят авторизацию наружу?

StackOverflow https://stackoverflow.com/questions/955399

Вопрос

Ценность внешнего удостоверения личности начинает возрастать, поскольку многие сайты теперь принимают OpenID, CardSpace или федеративную идентификацию.Однако многие разработчики еще не сделали следующего шага по реализации авторизации и использованию подходов, основанных на XACML.

Причина в неосведомленности или в чем-то другом?Как вы ожидаете узнать о ХАКМЛоснованные на подходах к разработке программного обеспечения?

Обратите внимание, что я спрашиваю об авторизации, а не аутентификации.

Это было полезно?

Решение

Я думаю, что перспектива экстернализации авторизации — гораздо более сложная вещь, чем экстернализация аутентификации (OpenID, CardSpace и т. д.).В основном это связано с тем, что авторизация гораздо более специфична для приложения.То, что Лицо А уполномочено делать в моем заявлении, он, возможно, не сможет сделать в вашем приложении, и это даже при условии, что между моим заявлением и вашим есть некоторая общая параллель, которой, скорее всего, не будет.

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

Другие советы

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

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

Мы не хотим, чтобы первое, что пользователь должен сделать на нашем сайте, было переходом на другой сайт.

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

Ниже приведены мои комментарии об OpenID как о службе аутентификации.

1) Как было указано, авторизация != аутентификация.OpenID обрабатывает аутентификацию, но владелец веб-приложения по-прежнему имеет полный контроль над правами, назначенными для этого входа.Это положительный момент, но путаница по этому поводу является отрицательным.

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

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

4) Вопреки приведенному выше комментарию, использование OpenID обычно снижает барьер для регистрации, особенно когда полезный пользовательский интерфейс указывает, что у нового пользователя, вероятно, уже есть OpenID.Это еще более верно, когда вы используете комбинированное решение OpenID/OAuth, такое как RPX.

Итак, с моей точки зрения, риски использования OpenID ложатся на пользователя, а не на веб-сайт.Я не могу предотвратить фишинг пользователя, заставляя его попытаться вспомнить еще один идентификатор пользователя и пароль.Кроме того, «черным шляпам» не нужно делать ничего более гнусного, чем хранить пароли пользователей своего сайта в виде обычного текста, чтобы получить доступ к другим учетным записям пользователя.Сколько людей используют разные пароли для входа на каждый веб-сайт?

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

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

Одной из проблем является некоторая комбинация «Не здесь изобретено» и недоверие к внешним авторитетам в отношении (даже псевдономной) идентичности.Хорошая запись здесь:

Еще я думаю, что это может быть инерция.Без мощного приложения люди мигрируют медленно.Учитывая рост числа интеграций с Facebook, который я наблюдаю в последнее время, я думаю, что мы находимся на вершине крутого склона и вот-вот вступим в этот мир.

Как указал другой автор, авторизация обычно зависит от приложения.То, что вы можете ДЕЛАТЬ в одном приложении, существенно отличается от того, что вы можете ДЕЛАТЬ в другом.Авторизация, как правило, более естественно обрабатывается приложением, особенно в готовых приложениях для клиентов.

Производительность — еще одна проблема.В этом можно убедиться, получив реализацию XACML от Sun и используя ее для реализации некоторой авторизации.Вы несете сетевые расходы на обеих сторонах запроса, которые (в зависимости от того, как вы проектируете запрос/ответ и т. д.) могут значительно превышать фактическую стоимость решения об авторизации.Встройте это в COTS-приложение, где у вас будет меньше свободы для оптимизации производительности, и ситуация станет еще хуже.

Тем не менее, я думаю, что некоторые из многообещающих областей связаны с соблюдением нормативных требований.Существуют некоторые разрешения, которые не зависят от приложения.Например, передача служебной или секретной информации или материалов.В этих случаях можно привести веские аргументы в пользу одного и того же элемента управления, существующего в каждом приложении, потому что обратное очень плохо.Наличие любого количества реализаций и правил для одного и того же контроля доступа — это кошмар для управления.Проще всего начать с такой среды управления, как XACML, — начать с того, что кто-то может видеть, а затем перейти к тому, что кто-то может сделать.

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

Некоторые причины:

  1. Как показали некоторые комментарии, существует общее мнение, что «авторизация является локальной», что означает, что существует небольшой потенциал от повторного использования дорогостоящих в поддержании высокого качества «атрибутов субъекта», необходимых для принятия важных решений о доступе. .(Я считаю, что существует высокий потенциал повторного использования, поскольку некоторые законы/правила широко применимы, но полное обсуждение этого слишком долго для этого формата.)
  2. Отсутствие инфраструктуры данных:для применения контроля доступа на основе политик между организациями (я использую/доверяю данным авторизации какой-либо другой организации («AuthZ») для разблокировки доступа к моим данным) требуется, как минимум, чтобы я понимал семантику атрибута (что такое « сотрудник правоохранительных органов"?Что такое «гражданин США».) После этого было бы неплохо иметь понятные стандарты качества атрибутов и их сертификацию третьей стороной.(Некоторые могут заметить, что эти требования аналогичны требованиям к совместимости PKI:как дела?И это только для одного фрагмента данных плюс вспомогательные материалы.)
  3. Влияние на роли/обязанности:Экстернализация авторизации, будь то «роли», «атрибуты» или «атрибуты с цифровой политикой», означает, что локальный «владелец данных» теряет контроль над ресурсом.Он также снимает с себя значительную работу и ответственность за ведение списков пользователей.Подобные изменения превращают реализацию внешнего AuthZ из технической проблемы в организационный вопрос с политической подоплекой.
  4. Большинство организаций не знают и не записали свою политику.Доступ может быть «тем, кто спрашивает» или «кто бы ни просит, и мне нравится» или «кто бы ни дал мне что -то, например, доступ к их данным». Применяемые реальные правила могут быть довольно уродливыми, когда они вынуждены открыть, выражая их на политическом языке.И набор навыков для хорошего воплощения письменных политик в цифровую политику также не растет на деревьях.На самом деле, набор навыков — это бизнес-аналитик или юрист, а не ИТ-специалист, и инструменты для этих людей редки или вообще отсутствуют.
  5. Если у вас есть надежное правило политики, вы, скорее всего, обнаружите, что атрибуты, необходимые для его обработки, не существуют — обычно они не являются теми, которые вы уже найдете в AD.Номер телефона НЕ полезен в качестве атрибута AuthZ, и даже «Организация», вероятно, не подходит для большинства законов или правил, которые вы действительно можете документировать.Это даже не говоря уже о обходных путях и приближениях, которые вам придется внедрить (и получить одобрение), чтобы выразить требования политики, такие как «вероятная причина».
  6. Относительно разрешимым, но все же реальным является то, что многие широко распространенные COTS-приложения не поддерживают внешнюю авторизацию, а многие разработчики приложений не привыкли к экстернализации и поэтому (а) попытаются отговорить вас от этого;или (б) выучить это за свои деньги и сделать это плохо.

Звучит довольно плохо, правда?Итак, позвольте мне закончить словами, что, несмотря на все это, я считаю, что игра стоит свеч.Список потенциальных преимуществ будет опубликован в другой раз.

Удачи!

Согласитесь с точкой зрения Джозефа о том, что авторизация очень специфична для приложения.

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

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

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

Гуглю сейчас..

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top