bcrypto / bias

Authentication frameworks
2 stars 0 forks source link

OIDC vs OAuth 2.0 #43

Closed bcryptobot closed 1 year ago

bcryptobot commented 2 years ago

Проект стандарта выдвигает требования к инфраструктурам аутентификации на базе технологии OpenID Connect, хотя разделы 4-6 являются независимыми от технологий, а разделы 7+ описывают технологию OpenID Connect. В связи с этим рекомендуется или сменить наименование стандарта на "Инфраструктуры аутентификации OpenID Connect" или разбить стандарт на две части: "Инфраструктуры аутентификации. Общие требования" (разделы 4-6) и "Инфраструктуры аутентификации. Технология OpenID Connect" (разделы 7+). Сведение всевозможных инфраструктур аутентификации к одной технологии OpenID Connect является нецелесообразным, так как данная технология является достаточно сложной во внедрении, поэтому существуют и широко применяются альтернативные технологии. Например, широко применяется технология Oauth2, которая применяется как самостоятельно, так и служит основой для других технологий: OIDC, FAPI и др. В РБ технология Oauth2 внедрена и используется в ЕРИП, причины для отказа от Oauth2 в пользу OpenID Connect отсутствуют.

agievich commented 2 years ago

Технология OIDC касается аутентификации, технология OAuth (open authorization) – авторизации (см. напр. https://stackoverflow.com/questions/1087031/whats-the-difference-between-openid-and-oauth). Методологически, в стандарте, посвященном аутентификации, некорректно устанавливать технологию авторизации. Технически, как справедливо отмечается в замечании, технология OIDC основана на технологии OAuth 2.0. Об этом сказано в пункте 4.1 Проекта стандарта:

Дополнительно в разделе 8 представлена реализация элементов аутентификации и федерации на основе технологии OIDC [23], в свою очередь основанной на технологии OAuth 2.0 [19].

Обратим внимание, что в Проекте технология OIDC вводится как один из возможных способов реализации элементов аутентификации и федерации. В частности, довольно объемные приложения B – E являются условно обязательными:

Технология OIDC детализируется в приложениях В –– Е. Приложения В –– Е являются обязательными только при условии использования технологии.

Применение Проекта без раздела 8 (OIDC) и упомянутых приложений – это возможная опция, которая закладывалась при разработке Проекта и которая соответствует предложенному сужению "Инфраструктуры аутентификации. Общие требования".

Принципиальным отличием OIDC от OAuth является наличие билета аутентификации (БА). Если отказаться от выпуска этого билета и сделать в Проекте еще несколько несложных технических упрощений, мы получим OAuth 2.0. Фактически, OAuth 2.0 можно позиционировать как результат профилирования OIDC. У отечественных компаний есть опыт профилирования. Они вполне могут взяться за разработку стандарта, посвященного инфраструктурам авторизации, определив в нем все нужные компаниям технологии.

Причин для использования в ЕРИП технологии OIDC, по-видимому, действительно нет. Ведь если ЕРИП строится исключительно в соответствии с OAuth 2.0, то элементы федерации в ЕРИП отсутствуют. Тем не менее, пакеты Проекта, посвященные идентификации и аутентификации, остаются применимыми к ЕРИП (кстати, в этих пакетах БА не упоминаются).