M365Con 2027 – безкоштовна онлайн-конференція · 11–22 Jan 2027 · 120 sessions→ m365con.net

Блог · Mirko Peters

Посібник з реєстрації застосунків і OAuth для безпечної інтеграції

By ·

Зареєструйте свій застосунок за допомогою OAuth 2.0. Розберіться в потоці коду авторизації для безпечного доступу — ключовій частині гранту коду авторизації OAuth 2.0.

Automatically translated with AI from the original post. Read the English original

Cover: Solve the Microsoft 365 Permission and Access Problem

Визнаймо: правильна автентифікація та реєстрація застосунку — це не лише дотримання складних протоколів. Це насамперед захист ваших користувачів, даних і організації. Цей посібник розвіює туман навколо реєстрації застосунків і OAuth 2.0, щоб ви могли побудувати безпечну автентифікацію на основі стандартів за допомогою Microsoft Entra ID (раніше Azure AD) або будь-якого іншого провайдера на ваш вибір.

Ми розберемо кроки й поняття, які вам потрібні: від розуміння того, навіщо потрібен OAuth, до практичної реалізації для веб-, мобільних застосунків чи SaaS. По дорозі ви знайдете чіткі визначення, практичні поради та дорожню карту, яка допоможе тримати інтеграцію під контролем і уникнути типових помилок, через які часто спотикаються розробники, що лише починають працювати з OAuth. Чи ви вперше досліджуєте цю тему, чи налаштовуєте складне корпоративне середовище, тут ви знайдете все необхідне, щоб впевнено будувати рішення та розуміти ідентифікатори, потрібні для вашого застосунку.

Посібник з реєстрації застосунків і OAuth — визначення

Реєстрація застосунку — це процес створення та налаштування ідентичності застосунку в провайдері ідентичності (наприклад, Azure AD, Google чи Auth0), щоб застосунок міг безпечно запитувати автентифікацію й авторизацію. Зазвичай вона передбачає призначення client ID, client secret або сертифіката, визначення redirect URI, налаштування дозволів і областей доступу (scopes), а також конфігурацію дозволених типів грантів.

Короткі пояснення: Посібник з OAuth пояснює, як використовувати фреймворк OAuth 2.0 для авторизації застосунків і надання доступу до захищених ресурсів без передачі облікових даних користувача. Він охоплює поширені потоки авторизації (код авторизації, implicit, client credentials, device code і refresh tokens), запит scopes, роботу з токенами (access і refresh), перевірку ID-токенів і безпечне зберігання секретів. Разом реєстрація застосунку та посібник з OAuth допомагають розробникам зареєструвати свій застосунок у провайдері ідентичності, обрати правильний потік для свого сценарію, реалізувати обмін і перевірку токенів, а також дотримуватися найкращих практик безпечної роботи з токенами та доступу з мінімально необхідними привілеями.

8 несподіваних фактів про посібник з реєстрації застосунків і OAuth

  • Client secrets можуть витікати через логи: Багато розробників під час налагодження без задуму записують client ID і секрети в логи, через що облікові дані реєстрації застосунку стають вразливими, якщо політики логування не посилено. Тому з ідентифікаторами завжди поводьтеся обережно.
  • Redirect URI суворіші, ніж ви очікуєте: Провайдери OAuth часто вимагають точної відповідності redirect URI (включно з кінцевими слешами та схемою), тож навіть незначна різниця може зламати потоки, які у вашому застосунку, здавалося б, налаштовано правильно.
  • Публічним клієнтам секрети не потрібні, але захищати їх все одно треба: Нативні застосунки та single-page застосунки розглядаються як публічні клієнти без client secrets, проте їм усе одно необхідно використовувати PKCE і безпечні підходи до redirect, щоб запобігти перехопленню коду.
  • Scopes за замовчуванням не гарантують мінімальних привілеїв: Під час реєстрації застосунків типові scopes або екрани згоди можуть запитувати широкі дозволи. Щоб забезпечити принцип мінімальних привілеїв, обов'язково потрібні явні обмеження scopes і поступова згода (incremental consent).
  • Відкликання токенів підтримується не всюди: Не всі провайдери ідентичності враховують відкликання токенів або забезпечують миттєвий вихід із сесій у всіх застосунках, тому реєстрація застосунку має включати керування сесіями та політики refresh-токенів.
  • Метадані реєстрації застосунку — це поверхня атаки: Публічно доступні назви застосунків, логотипи та redirect URI можуть допомогти зловмисникам створити переконливий фішинг або атаки через відкритий redirect, якщо з ними не поводитися обережно.
  • Автоматизоване створення може неправильно налаштувати дозволи: Автоматизація CI/CD, яка створює реєстрації застосунків, часто надає надто широкі дозволи API або не реєструє потрібні redirect URI, що призводить до тихих збоїв або ризиків для безпеки.
  • UX згоди впливає на рішення щодо безпеки: Користувачі й адміністратори часто надають широку згоду, бо діалогові вікна згоди заплутані. Зрозумілі, мінімалістичні запити згоди в реєстрації застосунку та посібнику з OAuth зменшують надмірне надання доступу.

Розуміння OAuth 2.0 і основ Entra ID

OAuth 2.0 є основою сучасних потоків автентифікації. Він дає змогу застосункам безпечно отримувати доступ до даних і ресурсів користувача, навіть не бачачи пароля. Розгляньмо, як працює цей процес. По суті, OAuth 2.0 визначає, як користувач («власник ресурсу»), застосунок («клієнт») і постачальник ідентифікації («сервер авторизації») взаємодіють між собою, щоб користувачі зберігали контроль над своєю інформацією.

Але що робити, коли потрібно не просто авторизувати доступ до даних, а автентифікувати самих користувачів? Саме тут на допомогу приходить OpenID Connect, який додає безпечну ідентифікацію та вхід поверх OAuth 2.0. Завдяки OpenID Connect такі постачальники, як Microsoft Entra ID і Google, дозволяють вашим застосункам перевіряти, хто є користувачем, і запитувати обмежені дозволи до додаткових ресурсів в одному уніфікованому досвіді.

Якщо ви чуєте терміни на кшталт «client ID», «authorization endpoint» чи «access token», не лякайтеся. Усі вони зводяться до одного: хто з ким взаємодіє і що йому дозволено робити. Microsoft Entra ID, зокрема, використовує ці протоколи, щоб дати розробникам надійну основу на базі стандартів, придатну як для окремих бізнес-застосунків в одному клієнті, так і для масштабних багатоклієнтських SaaS-продуктів.

Розуміння цих основ означає, що ви будуєте на перевіреному фундаменті. Вибір правильного потоку OAuth для вашого сценарію, наприклад code flow для веб-застосунків або device flow для смарт-телевізорів, забезпечує безпечний вхід, якому довіряють користувачі і який оцінить ваша команда з відповідності вимогам.

Посібник з реєстрації застосунків і OAuth: типові помилки з OAuth 2.0 і Entra ID

Цей посібник з реєстрації застосунків і OAuth перелічує часті помилки, які команди допускають під час реалізації OAuth 2.0 з Microsoft Entra ID (Azure AD), і показує, як вони впливають на безпеку, функціональність і користувацький досвід.

1. Плутанина ролей OAuth і протоколів
  • Змішування понять OAuth 2.0 і OpenID Connect (наприклад, очікування ID-токенів там, де видаються лише access-токени).
  • Неправильне використання потоків OAuth: вважати неявний потік (implicit flow) придатним для сучасних застосунків замість Authorization Code з PKCE.
2. Неправильні налаштування реєстрації застосунку
  • Неправильно зареєстровані URI перенаправлення (хибна схема, зайва кінцева косая риска або використання localhost у продуктивному середовищі).
  • Використання налаштувань публічного клієнта для конфіденційних застосунків або навпаки, що призводить до помилок токенів або розкриття секретів.
  • Не задані правильні дозволи API та області (scopes) або не надано згоду адміністратора там, де це потрібно.
3. Неправильна робота з клієнтськими секретами та сертифікатами
  • Вбудовування клієнтських секретів у код на стороні клієнта або в публічні репозиторії.
  • Відсутність регулярної ротації секретів і сертифікатів або неприбирання прострочених облікових даних з реєстрації застосунку.
  • Необґрунтоване використання довгоживучих секретів замість короткоживучих сертифікатів або керованих ідентифікацій.
4. Слабка перевірка та зберігання токенів
  • Неналежна перевірка токенів (issuer, audience, signature, nonce, exp).
  • Небезпечне зберігання access- або refresh-токенів (наприклад, локальне сховище браузера без захисту).
  • Довіра до вмісту токена без перевірки scopes або roles, які повертає Entra ID.
5. Непорозуміння щодо моделі згоди та дозволів
  • Припущення, що згода користувача означає дозвіл застосунку, без розуміння того, що деякі дозволи потребують згоди адміністратора.
  • Запит надмірних дозволів і областей, що створює зайві ризики та підвищує частку відмов під час надання згоди.
6. Неправильне використання refresh-токенів
  • Ігнорування ротації refresh-токенів і політик відкликання з Entra ID, що призводить до несподіваних виходів із системи.
  • Використання refresh-токенів у публічних клієнтах без належного захисту (застосовуйте PKCE і відповідні терміни дії токенів).
7. Неналежна конфігурація багатоклієнтності
  • Неправильне налаштування багатоклієнтності для застосунків, які мають працювати між клієнтами.
  • Використання неправильних кінцевих точок (специфічних для клієнта чи common) і виникнення проблем із входом або згодою.
8. Ігнорування умовного доступу та політик безпеки
  • Непроведення тестів поведінки застосунку, коли застосовуються Умовний доступ, MFA або політики відповідності пристроїв.
  • Припускати, що токени завжди видаватимуться за тих самих умов, не варто: політики можуть їх блокувати або вимагати додаткових кроків автентифікації.
9. Покладатися на застарілу документацію чи зразки коду
  • Використовувати застарілі потоки OAuth або шаблони Azure AD v1 замість рекомендацій Microsoft identity platform (v2).
  • Застосовувати зразки зі спільноти, не перевіривши, чи реалізують вони безпечні практики (PKCE, безпечне зберігання, належну перевірку).
10. Ігнорувати журналювання, моніторинг і обробку помилок
  • Не журналювати помилки автентифікації чи помилки видачі токенів, через що діагностика стає складною.
  • Показувати користувачам необроблені тексти помилок замість зрозумілих вказівок щодо дій.

Скористайтеся цим посібником із реєстрації застосунків і OAuth, щоб перевірити свою реалізацію, дотриматися найкращих практик Microsoft identity platform і зменшити ризики безпеки та експлуатації під час інтеграції OAuth 2.0 з Entra ID.

Передумови реєстрації застосунку для налаштування OAuth

Перш ніж починати роботу з екранами реєстрації та вставляти назву застосунку в портал, перевірте кілька обов’язкових речей. По-перше, вам потрібен доступ до центру адміністрування Microsoft Entra вашої організації або відповідної консолі постачальника ідентифікації, який ви використовуєте, без жодних скорочень. Без належних дозволів ви впреретесь у стіну ще до того, як зайдете всередину.

По-друге, визначте, який тип застосунку ви створюєте і які ідентифікатори знадобляться для його роботи. Це веб-застосунок, односторінковий застосунок, мобільний застосунок чи, можливо, автоматизована служба? Кожен тип має власні вимоги до автентифікації та авторизації. Це рішення на початку визначає параметри безпеки, які ви налаштуєте пізніше.

Також важливо окреслити, хто користуватиметься вашим застосунком. Чи це будуть лише люди з вашої організації (один клієнт)? Чи застосунок має обслуговувати користувачів інших компаній або широку публіку (кілька клієнтів)? Від цього залежать параметри реєстрації, застосовувані каталоги користувачів і потік згоди, який побачать ваші користувачі.

Нарешті, зберіть технічні деталі: дозволені URL-адреси для перенаправлення після входу, платформи, які ви підтримуватимете (iOS, Android, Windows?), і дозволи (або «області», scopes), які має запитувати ваш застосунок. Якщо продумати ці деталі заздалегідь, налаштування пройде значно швидше, і ви уникнете типових проблем, як-от некоректні URI чи невідповідні типи облікових записів пізніше.

Як зареєструвати застосунок у Microsoft Entra ID

Реєстрація застосунку в Microsoft Entra ID (раніше Azure AD) закладає основу для всього, що стосується автентифікації та доступу до API. Процес починається в центрі адміністрування Entra, де ви створюєте нову реєстрацію застосунку й отримуєте для свого застосунку унікальну ідентичність («ідентифікатор клієнта», client ID) у каталозі вашої організації.

Ви вводите назву застосунку, а потім вибираєте, хто може ним користуватися: лише ваша організація, кілька організацій або будь-який обліковий запис Microsoft. Цей крок є критичним, особливо для SaaS- і B2B-застосунків, бо саме він визначає коло користувачів застосунку та способи керування згодою клієнта.

Після вибору аудиторії ви налаштовуєте параметри платформи застосунку. Для веб-застосунків додаєте URI перенаправлення; для мобільних або односторінкових застосунків налаштування під конкретну платформу забезпечують зручний вхід. Портал Entra проводить вас через додавання облікових даних, як-от секрети клієнта чи сертифікати, які застосунок використовуватиме, щоб підтвердити свою ідентичність.

Завершення реєстрації приводить ваш застосунок у відповідність до стандартів OAuth 2.0 і гарантує, що потік автентифікації залишається безпечним і відповідає вимогам. Чи плануєте ви один клієнт, чи кілька, розуміння цих налаштувань на ранньому етапі закладає надійний фундамент для майбутнього масштабування та потреб інтеграції.

Ключові переваги реєстрації застосунку в Microsoft Entra ID

  • Централізоване керування ідентичністю: керуйте автентифікацією, авторизацією та обліковими записами користувачів для свого застосунку з одного клієнта Entra ID.
  • Безпечні потоки OAuth: використовуйте вбудовану підтримку OAuth 2.0 і OpenID Connect для безпечного входу, видачі токенів і делегованого доступу.
  • Єдиний вхід (SSO): забезпечте безшовний SSO для Microsoft 365, Azure та інших інтегрованих служб, щоб покращити досвід користувачів і зменшити кількість запитів на пароль.
  • Детальний контроль дозволів: визначайте й керуйте детальними дозволами API, досвідом надання згоди та доступом за принципом найменших привілеїв для делегованих дозволів і дозволів застосунків.
  • Умовний доступ і політики безпеки: застосовуйте MFA, політики відповідності пристроїв, геолокації та оцінки ризиків, щоб захистити доступ до застосунків і конфіденційні дані.
  • Керування секретами та обліковими даними застосунків: безпечно зберігайте й оновлюйте клієнтські секрети, сертифікати та конфігурацію для кількох клієнтів, дотримуючись практик управління життєвим циклом, щоб зберегти цілісність використання застосунку.
  • Інтеграція з сервісами платформи Microsoft: отримуйте доступ до Microsoft Graph, API Azure, Teams та інших можливостей платформи, використовуючи стандартизовані токени та моделі згоди.
  • Підтримка гібридних і мультиплатформних застосунків: автентифікуйте користувачів у веб-, мобільних, настільних і сервіс-до-сервісних сценаріях за допомогою єдиних протоколів ідентифікації, стежачи за тим, щоб кожен застосунок використовував правильні ідентифікатори.
  • Моніторинг і аудит: використовуйте журнали, звіти про входи та інструменти безпеки для виявлення аномалій, розслідування інцидентів і підтримки відповідності вимогам.
  • Масштабованість і готовність до корпоративного використання: користуйтеся глобальною інфраструктурою Entra ID, варіантами для кількох клієнтів і корпоративними функціями, щоб підтримувати зростання кількості користувачів і складні організаційні потреби.
  • Інструменти розробника та документація: використовуйте SDK, прикладний код і посібник з реєстрації застосунків і oauth, щоб прискорити впровадження та усунути типові проблеми.

Налаштування URI перенаправлення та параметрів платформи для застосунків Entra ID

Встановлення правильних URI перенаправлення під час реєстрації застосунку здається простим, але цей крок вирішальний для безпеки. URI перенаправлення вказують Entra ID, куди надсилати користувачів (разом із їхніми токенами) після успішного входу. Під час їх налаштування Entra застосовує суворі правила: без шаблонних доменів, без небезпечних схем URI та без відкритих місць, які можуть використати зловмисники.

Якщо ви створюєте односторінковий застосунок (SPA), зазвичай використовується URL HTTPS, що вказує на домен вашого застосунку, щоб забезпечити безпечний обмін даними. Нативні застосунки потребують схем URI, пов’язаних з ідентифікатором пакета або бандла застосунку, що не дозволяє випадковим застосункам перехоплювати токени на тому самому пристрої. Веб-застосунки зазвичай використовують кінцеві точки зворотного виклику для входу, і кожну з них потрібно вказати явно.

Помилки в налаштуваннях призводять до класичних помилок «redirect URI mismatch» і, що гірше, відкривають зловмисникам можливість перехоплювати токени. Варто приділити час тому, щоб окреслити кожну платформу, на якій працюватиме ваш застосунок, і відповідні URI перенаправлення. Це допоможе забезпечити безперебійну автентифікацію та спокій.

Не забувайте оновлювати реєстрацію застосунку щоразу, коли змінюєте URL клієнта, додаєте платформи або розширюєте середовища (наприклад, тестове та продуктивне). Тримати ці URI захищеними й упорядкованими — перший крок до того, щоб потік токенів залишався надійним.

Основи потоків OAuth і керування токенами

OAuth 2.0 побудовано на наборі потоків авторизації, які охоплюють різні сценарії: входи через веб, мобільні входи, викликів між серверами або роботу застосунків без присутності користувача. Найпопулярніший і найбезпечніший із них — потік коду авторизації, який призначено для того, щоб чутливі токени не потрапляли в браузери та мобільні застосунки, а безпека стояла на першому місці.

Після того як користувач автентифікований і надає згоду, ваш застосунок отримує короткоживучий код. Його потрібно обміняти в кінцевій точці токенів на токени доступу й оновлення. Ці токени надають обмежений у часі доступ до даних: коли строк їхньої дії минає, токен оновлення може запросити новий токен доступу, щоб сесія залишалася активною.

Керування токенами — це не лише відстеження строків дії; це постійне забезпечення їхньої безпеки. Це передбачає використання безпечного зв’язку (наприклад, HTTPS), ніколи не розкриття секретів у клієнтському коді та застосування принципу найменших привілеїв під час запиту областей доступу.

Цей розділ допоможе зрозуміти, як OAuth забезпечує критичні взаємодії між користувачами, застосунками та платформами, і як надійне керування токенами підтримує стабільні, безпечні робочі процеси як для кінцевих користувачів, так і для автоматизованих систем.

Реалізація потоку коду авторизації OAuth

  1. Початок авторизації: ваш застосунок перенаправляє користувача на кінцеву точку авторизації Entra ID, передаючи такі дані, як ідентифікатор клієнта, запитувані області доступу та унікальний випадковий параметр state для захисту від CSRF.
  2. Надання дозволу користувачем: користувач переглядає екран згоди, де чітко показано, які дозволи потрібні вашому застосунку, і підтверджує доступ.
  3. Отримання коду авторизації: після надання згоди Entra ID перенаправляє користувача назад на вказаний вами redirect URI, передаючи тимчасовий код авторизації та значення state, яке ви задали на початку.
  4. Обмін коду на токени: ваш бекенд безпечно надсилає код разом з обліковими даними клієнта (а також PKCE code verifier, якщо його використовуєте) на кінцеву точку токенів Entra. Після перевірки ви отримуєте access-токени (а часто й refresh-токени).
  5. Використання токенів для доступу до API: тепер ваш застосунок додає access-токен до кожного запиту до API, підтверджуючи авторизацію від імені користувача. Access-токени дійсні лише короткий час, що мінімізує ризик їх компрометації, а refresh-токени дозволяють отримувати нові access-токени для тривалих сесій.

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

Найкращі практики керування терміном дії access- і refresh-токенів

  1. Зберігайте токени безпечно: використовуйте безпечні сховища, які надає ОС, наприклад Keychain на iOS, Keystore на Android або зашифровані менеджери секретів на сервері. Ніколи не жорстко прописуйте токени у бінарних файлах застосунку та не виводьте їх у журнали.
  2. Враховуйте терміни дії токенів: відстежуйте значення exp (claim) у кожному токені та оновлюйте його заздалегідь, до закінчення терміну дії, щоб уникнути невдалих запитів до API та поганого досвіду користувача.
  3. Підтримуйте ротацію токенів: завжди використовуйте найновіший refresh-токен у кожному запиті та швидко відкидайте повторно використані або застарілі токени. Це обмежує наслідки, якщо токен буде скомпрометовано.
  4. Обмежуйте дозволи для кожного токена: запитуйте лише ті scope, які справді потрібні, і віддавайте перевагу короткоживучим access-токенам. Це суттєво зменшує шкоду, якщо токен витече або буде викрадено.

Захист реалізацій OAuth у різних контекстах

Правильна інтеграція OAuth — це не просто виконання кроків за списком, а побудова багаторівневого захисту, що відповідає архітектурі вашого застосунку та характеру його використання. Чи працює ваш застосунок у браузері, на телефоні чи виключно в хмарі, вам потрібні стратегії автентифікації, підібрані під кожен контекст.

Такі технології, як PKCE (Proof Key for Code Exchange), захищають потік з кодом для публічних клієнтів і не дають зловмисникам перехопити код та обміняти його на токен. Водночас для застосунків, що працюють у безпечному середовищі, найкращими інструментами для підтвердження ідентичності та керування довірою стають секрети клієнта й сертифікати.

Продумане зберігання токенів і уважний контроль рівнів привілеїв допомагають уникнути випадкових витоків і обмежити потенційні наслідки, якщо щось усе ж піде не так. Вибираючи правильні засоби безпеки (PKCE, секрети, сертифікати та коректне обмеження області доступу), ви суттєво зменшуєте поверхню атаки та підвищуєте шанси на стабільну й відповідну вимогам роботу.

Далі наведено перевірені на практиці стратегії, які довели свою ефективність проти типових загроз і допомагають налаштувати OAuth для надійного захисту в будь-яких типах застосунків і середовищ.

Як PKCE захищає авторизацію OAuth у публічних клієнтах

PKCE (Proof Key for Code Exchange) є критично важливим, коли OAuth використовується в мобільних застосунках і застосунках на основі браузера, тобто в публічних клієнтах, де зберігати секрет неможливо. Коли ви запускаєте потік авторизації з кодом, ваш застосунок генерує випадковий «code verifier» і хешований «code challenge». Ці значення передаються разом із користувачем і фінальним запитом на токен. Навіть якщо зловмисник перехопить код авторизації, він не зможе обміняти його на токен без цього секретного verifier, що робить атаки з перехопленням коду майже неможливими в Microsoft Entra ID та подібних платформах.

Керування секретами клієнта, сертифікатами та федеративними обліковими даними

  • Секрети клієнта: використовуються конфіденційними застосунками, наприклад довіреними бекенд-сервісами, щоб підтвердити свою ідентичність на кінцевій точці токенів. Зберігайте секрети у захищених сховищах, регулярно їх змінюйте та ніколи не поставляйте їх разом із клієнтським кодом застосунку.
  • Сертифікати: для вищого рівня гарантій використовуйте сертифікати X.509 замість звичайних секретів, щоб посилити захист ідентифікаторів вашого застосунку. Сертифікати забезпечують надійнішу перевірку за допомогою пар відкритого та закритого ключів і ідеально підходять для регульованих галузей або застосунків із суворими вимогами відповідності.
  • Федеративні облікові дані: для сценаріїв «принесіть власну ідентичність» використовуйте федеративні облікові дані, як-от федеративну ідентичність Microsoft Entra або зовнішні провайдери. Це дозволяє автентифікацію без безпосереднього оперування секретами, що знижує накладні витрати на керування.
  • Робота з конвеєрами: у CI/CD-процесах впроваджуйте та ротуйте секрети й сертифікати за потреби, ніколи не жорстко прописуючи їх у системі контролю версій. Автоматичні сповіщення про закінчення терміну дії додають ще один рівень стійкості.

Захист токенів і зменшення ризику надмірних привілеїв

  • Зберігайте токени лише в безпечних місцях (системні сховища ОС, зашифровані серверні середовища), а не в сховищах, доступних користувачеві.
  • Передавайте токени завжди через HTTPS або інші безпечні канали: звичайний HTTP відкриває токени для перехоплення.
  • Запитуйте мінімальні дозволи («scopes») для кожного токена: ніколи не просіть більше, ніж потрібно вашому застосунку.
  • Регулярно перевіряйте використання токенів і призначення привілеїв, щоб непомітно не накопичувалися зайві дозволи.

Найкращі практики OAuth для мобільних і нативних застосунків

Мобільні та нативні застосунки сьогодні стикаються з особливими труднощами: пристрої губляться, застосунки ділять сховище, а користувачі очікують швидкого входу, який майже непомітний. Саме тому дотримання найкращих практик OAuth на iOS, Android і комп’ютерах, з використанням вбудованих SDK та перевірених механізмів зберігання, має величезне значення.

Правильний SDK (наприклад, MSAL для Microsoft Entra ID) бере на себе значну частину складної роботи: керування токенами, логіку оновлення та інтеграцію з безпечним сховищем на рівні ОС. Для чутливих токенів ці SDK за замовчуванням обирають найбезпечніше сховище, враховуючи особливості конкретного пристрою чи ОС.

Не нехтуйте зручністю користування: універсальні посилання, глибокі посилання та потоки через системний браузер допомагають користувачам завершити вхід без плутанини і без ризику фішингу. За правильного налаштування застосунок передає користувача до безпечного, довіреного системного веб-подання, а потім безпечно повертає його всередину, щойно вхід завершено: без спливаючих вікон і без витоку токенів.

Ці практики покликані не лише зберігати токени в безпеці, а й формувати довіру кінцевих користувачів, що підвищує рівень впровадження вашого застосунку та зменшує кількість звернень до підтримки в майбутньому.

Універсальні посилання та нативна автентифікація першої сторони

Універсальні посилання (на iOS) і схеми застосунків (на Android) значно підвищують безпеку автентифікації користувачів. Використовуючи посилання, які перевіряє ОС і які прив’язані до ідентичності вашого застосунку, ви не даєте сторонніх застосунках перехопити перенаправлення під час входу та отримати чужі токени. Нативна автентифікація використовує довірені системні браузери, тож входить справжній користувач, і ризики фішингу, перехоплення токенів та випадкових входів у непов’язані застосунки усунуто. Разом ці інструменти дають користувачеві безперебійний і безпечний досвід, який майже унеможливлює типові загрози мобільного OAuth.

Усунення несправностей OAuth і складні сценарії

Інтеграції OAuth майже ніколи не працюють ідеально з першої спроби: помилки та незвичайні крайні випадки є частиною роботи. Часто проблеми виникають через невідповідність URI перенаправлення, прострочені коди або помилкові клієнтські секрети, які можуть повністю зупинити потоки автентифікації та вплинути на використання застосунку. Цей розділ допоможе вам розібратися у відповідях із помилками, відстежити невдалі обміни та вирішити проблеми до того, як вони дійдуть до служби підтримки.

Окрім базових речей, деякі сценарії, як-от взаємодія між серверними застосунками, вхід на пристроях IoT або потреба в суворіших гарантіях протоколу, вимагають спеціалізованих розширень OAuth або неінтерактивних потоків. Облікові записи служб, взаємний TLS і потоки з кодом пристрою створені саме для таких вимог.

Завдяки порадам щодо типових збоїв і складних сценаріїв ви краще підготуєтеся до усунення несправностей, проєктування та підтримки надійних рішень OAuth, навіть коли екосистема ваших застосунків ускладнюватиметься.

Чи шукаєте ви впертий збій на кінцевій точці токена, чи готуєте застосунок до реальних умов, де скрізь є пристрої з обмеженим введенням і безголові служби, ці поради допоможуть зберегти ваші інтеграції стабільними та безпечними.

Розбір відповідей із помилками OAuth і збоїв обміну кодами

  • Недійсний URI перенаправлення: виникає, коли перенаправлення не збігається із зареєстрованим списком; уважно перевірте введені дані та регістр символів.
  • Прострочений код авторизації: користувачі надто довго чекають або коди використовуються повторно; завжди використовуйте їх лише один раз і одразу після отримання.
  • Невідповідні облікові дані клієнта: надано неправильний секрет або сертифікат; перевіряйте облікові дані та за потреби оновлюйте їх.
  • Недійсна область або ресурс: запитано API чи області, які не дозволено використовувати, або їх написано з помилкою; перевірте конфігурацію та дозволи застосунку.

Облікові записи служб, пристрої з обмеженим введенням і розширення OAuth

  • Облікові записи служб (потік облікових даних клієнта): дозволяють застосункам автентифікуватися без користувача; чудово підходить для автоматизації та завдань між серверами.
  • Потік коду пристрою: для смарт-телевізорів і IoT; пропонує користувачеві ввійти на іншому пристрої, тому підходить там, де браузера немає.
  • Розширення взаємного TLS: використовує сертифікати як для сервера, так і для клієнта, підвищуючи безпеку для чутливих інтеграцій і гарантуючи, що застосунок використовує надійні методи автентифікації.
  • Динамічна реєстрація клієнтів: автоматизує підключення застосунків у великих SaaS- чи багатоорендних системах, спрощуючи керування обліковими даними у великому масштабі.

Посібник з реєстрації застосунків і OAuth у Entra ID

Переваги

  • Централізоване керування ідентичністю: інтеграція з Microsoft Entra ID забезпечує єдину ідентичність користувачів і застосунків у всіх сервісах.
  • Потужні засоби безпеки: підтримка OAuth 2.0, OpenID Connect, умовного доступу та детальних дозволів (областей і ролей).
  • Галузеві стандартні протоколи: використання широко підтримуваних стандартів OAuth і OIDC спрощує взаємодію зі сторонніми інструментами та бібліотеками.
  • Детальне налаштування застосунків: можна задати URI перенаправлення, сертифікати та секрети, дозволи API і елементи брендингу.
  • Гнучка модель згоди: підтримуються делеговані та застосункові дозволи з потоками згоди адміністратора, що обмежують надмірні права застосунків.
  • Корпоративні можливості: підтримка багатоорендних застосунків, співпраці B2B та інтеграції з Microsoft 365 і службами Azure.
  • Моніторинг і аудит: вбудовані журнали, входи й журнали аудиту для реєстрацій застосунків і потоків OAuth допомагають із відповідністю вимогам і усуненням несправностей.
  • Інструменти для розробників і SDK: великий набір SDK платформи ідентичності Microsoft, документації та швидких стартових прикладів спрощує впровадження.

Недоліки

  • Складність для новачків: конфігурація та моделі дозволів (URI перенаправлення, reply URL, неявний і код-авторизаційний потоки, області) можуть бути заплутаними для нових розробників.
  • Крутий поріг входу для функцій безпеки: умовний доступ, керовані ідентичності та розширені параметри токенів потребують глибших знань безпеки для безпечного налаштування.
  • Ризик розростання дозволів: неналежна згода або широкі дозволи застосунків можуть призвести до надмірних прав, якщо їх не переглядати регулярно.
  • Нюанси керування токенами: робота з refresh-токенами, терміном дії токенів і їх відкликанням має поведінку, specific для платформи, що може спричиняти проблеми інтеграції.
  • Міркування щодо меж клієнта: поведінка багатоорендних застосунків і запити згоди адміністратора додають операційної складності для міжорендних сценаріїв.
  • Зміни інтерфейсу та термінології: Microsoft періодично оновлює інтерфейс і назви Entra (Azure AD → Entra ID), що може призводити до розбіжностей у документації та плутанини.
  • Залежність від екосистеми Microsoft: тісна прив’язка до функцій Entra ID може ускладнити перенесення на провайдерів ідентичності, відмінних від Microsoft, без переробки.
  • Ризик помилкової конфігурації: неправильні параметри реєстрації застосунків (наприклад, URI перенаправлення, reply URL, налаштування неявного потоку) можуть створити діри в безпеці або порушити потоки автентифікації.

Наступні кроки та ключові ресурси спільноти для успішного OAuth

Гаразд, OAuth налаштовано й працює, але не знижуйте темп: переконайтеся, що застосунок для отримання токенів правильно налаштовано. Базове підключення — лише перший крок. Якщо ви справді хочете, щоб ваш застосунок вирізнявся й залишався безпечним для користувачів, саме час зайнятися додатковими можливостями. Почніть вивчати розширені клієнтські бібліотеки, поекспериментуйте з Microsoft Graph і вивчіть нові функції ідентичності, які можуть зробити інтеграцію надійнішою та зручнішою для всіх учасників.

До того ж вам не доведеться розбиратися самостійно. Документація Microsoft Entra ID така ж велика, як озеро Мічиган: вона містить актуальні посібники, приклади коду та всі технічні специфікації, які вам, імовірно, знадобляться. Зробіть звичкою перевіряти оновлення, особливо тепер, коли стандарти OAuth і хмарної ідентичності постійно змінюються.

Задоволені реєстрацією застосунку? Чудово. Тепер подивіться, як колеги на практиці знаходять цікаві рішення. Заглядайте на форуми розробників, офіційні дискусійні дошки та навіть у репозиторії GitHub бібліотек автентифікації. Якщо ви впретеся в стіну, імовірно, хтось уже вирішив вашу саме таку проблему або принаймні достатньо голосно поскаржився на неї, щоб хтось відповів.

Якщо ви з тих, хто любить експериментувати й вчитися на практиці, перегляньте доступні безкоштовні пробні версії, тестові клієнти та функції публічного попереднього перегляду. Вони дають змогу безпечно щось зламати й з’ясувати, що працює, перш ніж впроваджувати зміни для реальних користувачів. І не забувайте: OAuth і безпека — спільна справа, тож діліться своїми успіхами та питаннями. Так уся екосистема залишається чесною й міцною, а всі краще розуміють, як працює OAuth.

Контрольний список реєстрації застосунків і OAuth – Entra ID

  • Визначте тип застосунку та модель доступу — вирішіть, чи використовувати одноорендний, багатоорендний або особисті облікові записи Microsoft, а також визначте, чи це SPA, веб-застосунок, мобільний застосунок, daemon або сервісний застосунок.
  • Зареєструйте застосунок в Entra ID: створіть нову реєстрацію застосунку з чіткою назвою та підтримуваними типами облікових записів.
  • Налаштуйте URI перенаправлення: додайте коректні URI перенаправлення та зворотного виклику для кожної платформи (https, власна схема, localhost для розробки).
  • Задайте параметри платформи застосунку: увімкніть варіанти платформ SPA, веб, мобільні та настільні застосунки й за потреби налаштуйте потоки implicit/grant.
  • Створюйте та керуйте клієнтськими секретами: генеруйте клієнтські секрети для конфіденційних клієнтів, враховуйте термін дії та зберігайте їх безпечно (Key Vault).
  • Використовуйте сертифікати для автентифікації: для конфіденційних клієнтів у продуктиві завантажуйте сертифікати з відкритим ключем замість довгоживучих секретів.
  • Налаштуйте дозволи API: додайте області доступу та дозволи Microsoft Graph або власних API, потрібні застосунку.
  • Надайте адміністративну згоду там, де це потрібно: запитуйте та фіксуйте адміністративну згоду на делеговані дозволи, які вимагають згоди на рівні всього клієнта.
  • Визначте та опублікуйте власні області доступу (якщо це API): додайте області в розділі «Expose an API», задайте їх назви, описи та відображувані назви для адміністративної згоди.
  • Налаштуйте ролі застосунку (за потреби): визначте ролі застосунку та делеговані ролі для рольового контролю доступу й призначайте їх користувачам, групам або клієнтським застосункам.
  • Налаштуйте CORS для SPA, які викликають API: додайте дозволені джерела на API або налаштуйте політики CORS на шлюзі.
  • Оберіть потік OAuth 2.0: залежно від ситуації використовуйте Authorization Code (з PKCE для публічних клієнтів), Client Credentials для демон-застосунків або Device Code.
  • Впровадьте PKCE для публічних клієнтів: вимагайте Proof Key for Code Exchange для SPA та нативних застосунків, щоб запобігти перехопленню коду.
  • Коректно перевіряйте токени: перевіряйте issuer, audience, підпис, термін дії та обов'язкові claims за допомогою бібліотек ідентичності Microsoft або логіки перевірки JWT.
  • Використовуйте Microsoft Authentication Libraries (MSAL): надавайте перевагу MSAL для отримання токенів, кешування, оновлення та безпечної роботи на різних платформах.
  • Налаштуйте умовний доступ і MFA (за потреби): застосовуйте політики до реєстрації застосунку або до потоків входу користувачів, щоб забезпечити заходи безпеки.
  • Відстежуйте входи та журнали аудиту: увімкніть журнали та переглядайте події входу, згоди й адміністративні дії в журналах Entra ID.
  • Дотримуйтеся принципу найменших привілеїв: запитуйте лише потрібні дозволи та надавайте перевагу поступовій згоді, щоб мінімізувати ризики.
  • Регулярно ротуйте секрети й сертифікати: впровадьте автоматичну ротацію та сповіщення про спливання терміну дії облікових даних.
  • Захищайте клієнтський код і сховища: не зберігайте секрети в клієнтських застосунках, використовуйте безпечні сховища та найкращі практики платформи.
  • Тестуйте входи та потоки токенів у середовищах dev/staging: перевіряйте потоки автентифікації, терміни дії токенів, логіку оновлення, обробку помилок і UX згоди.
  • Підготуйте документацію для користувачів і адміністраторів: включіть кроки надання згоди, необхідні дозволи та рекомендації з усунення несправностей.
  • Періодично переглядайте й оновлюйте реєстрації застосунків: перевіряйте дозволи, ролі, секрети та реєстрації на предмет застарілих або невикористовуваних застосунків.
  • Застосовуйте захист мережі та API: розгляньте API Management, WAF, обмеження частоти запитів і service endpoints для захисту бекенд-API.

токен доступу azure використання oauth автентифікація

Що таке посібник з реєстрації застосунку та OAuth і навіщо він потрібен?

Посібник з реєстрації застосунку та OAuth пояснює, як зареєструвати клієнтський застосунок у постачальнику ідентифікації (наприклад, Azure) і реалізувати потоки авторизації OAuth 2.0, щоб ваш застосунок міг безпечно запитувати доступ до захищених ресурсів. Це важливо, незалежно від того, створюєте ви веб-застосунки, односторінкові застосунки, настільні застосунки чи бекенди веб-серверів, адже для отримання токена доступу та, за потреби, токена ID застосунку потрібні application ID (app ID), client ID і client secret (для конфіденційних клієнтів).

Як зареєструвати застосунок Azure та отримати application ID і app ID?

Щоб зареєструвати застосунок Azure, перейдіть на портал Azure, створіть нову реєстрацію застосунку, вкажіть назву та URI перенаправлення й запишіть client ID (application ID), який відображається в огляді застосунку. Якщо ваш застосунок є конфіденційним клієнтом (веб-сервер або традиційний веб-застосунок), створіть клієнтський секрет для використання разом із client ID і client secret. Зареєстрований застосунок використовується для авторизації та для запиту токенів доступу від сервісів Microsoft.

Який потік авторизації OAuth 2.0 варто використовувати для односторінкових застосунків?

Односторінкові застосунки (SPA) мають використовувати потік коду авторизації з PKCE (proof key for code exchange), а не неявний потік, щоб отримання токенів було безпечним. Потік коду з PKCE дозволяє застосунку безпечно обміняти код на токен доступу з клієнта, що працює у браузері. Так односторінкові застосунки можуть використовувати OAuth, не розкриваючи секрети клієнта в браузері.

Як працює запит на авторизацію і які параметри обов’язкові?

Запит на авторизацію надсилається на кінцеву точку авторизації постачальника ідентифікації й зазвичай містить client_id (ідентифікатор застосунку), response_type (наприклад, code), redirect_uri, scope і state. Для односторінкових застосунків, які використовують потік коду з PKCE, також додаються code_challenge і code_challenge_method. Користувач проходить автентифікацію та надає згоду (згода OAuth), а сервер авторизації повертає код на redirect URI, який застосунок може обміняти на токен доступу.

Як написати код для обміну коду на токен доступу?

Після отримання коду авторизації клієнтський застосунок надсилає запит на кінцеву точку токенів. Запит містить код, client_id (а для конфіденційних клієнтів також client_secret), redirect_uri і grant_type=authorization_code. Для PKCE додається code_verifier. Кінцева точка токенів повертає токен доступу, токен ідентифікатора (якщо його було запитано) і, можливо, токен оновлення, за допомогою якого можна отримати новий токен доступу після закінчення терміну дії поточного.

Як отримати токен доступу і використовувати його для викликів API?

Щоб отримати токен доступу, завершіть вибраний потік авторизації OAuth 2.0 і викличте кінцеву точку токенів. Отримавши токен доступу, передайте його в заголовку Authorization з типом Bearer під час викликів служб Microsoft або інших API (наприклад, Google Calendar або власних API). Перевіряйте токени на веб-сервері або на боці ресурсу, щоб переконатися, що запити застосунку авторизовані.

Що робити, коли термін дії токена доступу закінчується, і як отримати новий токен оновлення?

Коли термін дії токена доступу закінчується, використайте токен оновлення (якщо його було надано), щоб запросити новий токен доступу в кінцевій точці токенів з grant_type=refresh_token. Деякі потоки або постачальники можуть видавати новий токен оновлення під час оновлення, а інші повторно використовують той самий. Якщо токена оновлення немає (публічні клієнти або короткі потоки), перенаправте користувача назад до застосунку, щоб виконати новий запит на авторизацію.

Чи потрібні окремі реєстрації застосунків для веб-застосунків і мобільних або настільних застосунків?

Окремі реєстрації часто потрібні, коли типи застосунків суттєво відрізняються (наприклад, традиційний веб-сервер, односторінкові застосунки та настільні застосунки), адже URI перенаправлення, секрети клієнта та дозволені потоки відрізняються. Окремі реєстрації дозволяють налаштувати конкретні потоки авторизації та URI перенаправлення для кожного типу застосунку.

У чому різниця між реєстрацією клієнтського застосунку та застосунком у клієнті?

Реєстрація клієнтського застосунку — це конкретний запис реєстрації в постачальнику ідентифікації (застосунок Azure), який містить налаштування, як-от URI перенаправлення та секрети. Застосунок у клієнті означає, що реєстрація існує в конкретному клієнті Azure AD, і в межах цього клієнта їй можна призначати ролі та дозволи. Одна реєстрація застосунку може бути багатоклієнтською або одноклієнтською залежно від ваших потреб.

Як запросити доступ до служб Microsoft і які дозволи для цього потрібні?

Запитуйте доступ, вказуючи в запиті на авторизацію області (scopes), потрібні вашому застосунку. Для служб Microsoft налаштуйте дозволи API в реєстрації застосунку Azure, а потім запросіть користувачів надати згоду (згода OAuth) або попросіть адміністратора надати згоду для всього клієнта. Застосунок запитує області на кшталт User.Read або власні області API в межах запитів застосунку та використовує токен доступу для викликів служб.

Як захистити секрети клієнта і не допустити витоку облікових даних в односторінкових застосунках?

Односторінкові застосунки не повинні зберігати секрети клієнта, адже код, що виконується в браузері, можна переглянути. Використовуйте потік коду авторизації з PKCE, щоб застосунок міг безпечно отримати токен доступу без секрету клієнта. Для конфіденційних застосунків (веб-сервер) зберігайте client_id і client_secret на боці сервера, де їх не побачать користувачі.

Яка роль URI перенаправлення і чому він має збігатися з реєстрацією застосунку?

URI перенаправлення — це адреса, на яку постачальник ідентифікації надсилає відповідь на авторизацію (код або токен). Він має точно збігатися з URI перенаправлення, зареєстрованим у реєстрації застосунку, щоб запобігти перехопленню відповіді на авторизацію. Використовуйте точне співставлення або дозволені шаблони, визначені постачальником; невідповідність призведе до помилки обміну токенів.

Як змусити користувачів автентифікуватися та отримати id-токен додатково до токена доступу?

Щоб отримати id-токен, запитайте область openid і вкажіть response_type, який запускає видачу id-токена (потік коду авторизації з openid). Id-токен містить ідентифікаційні твердження про автентифікованого користувача. Використовуйте id-токен, щоб увійти в клієнтський застосунок, а токен доступу — для викликів нижчестоящих API.

Які конкретні потоки авторизації застосовуються для традиційних веб-застосунків і одностильових застосунків (SPA)?

Традиційні веб-застосунки (серверні) зазвичай використовують потік коду авторизації з обліковими даними клієнта (client id і client secret) і обмінюють код на веб-сервері. Одностильові застосунки (SPA) використовують надання коду авторизації з PKCE без клієнтського секрету. Настільні застосунки також використовують PKCE. Оберіть потік залежно від типу застосунку та від того, де можна безпечно зберігати секрети.

Чи можна використовувати одну реєстрацію застосунку для кількох клієнтських застосунків, чи для кожного застосунку варто створювати окрему реєстрацію?

Одну реєстрацію застосунку можна використовувати для кількох клієнтських застосунків, якщо вони мають спільну конфігурацію та URI перенаправлення. Проте найкращі практики зазвичай радять окремі реєстрації для різних застосунків, щоб ізолювати дозволи, URI перенаправлення та керування життєвим циклом. Врахуйте, чи може застосунку знадобитися інші області дозволів або інша поведінка згоди адміністратора.

Як перевіряти токени на веб-сервері або в API?

Ваш веб-сервер або API має перевіряти підпис, видавця, аудиторію (ідентифікатор застосунку або application id) і термін дії токена доступу або id-токена. Використовуйте документ виявлення постачальника, щоб отримати ключі підпису, і дотримуйтеся рекомендованих бібліотек перевірки для вашої платформи. Перевірка гарантує, що приймаються лише запити від автентифікованих і авторизованих застосунків.

Яка процедура отримання токена доступу для серверної служби за допомогою облікових даних клієнта?

Для сценаріїв «сервер–сервер» зареєструйте застосунок Azure, надайте йому дозволи застосунку, а потім скористайтеся потоком облікових даних клієнта: виконайте POST-запит до кінцевої точки токенів із grant_type=client_credentials, client_id, client_secret і scope/resource. Кінцева точка повертає токен доступу, який серверна служба може використовувати для викликів служб Microsoft або захищених API.

Як обробляти згоду OAuth і згоду адміністратора для багатоклієнтських застосунків?

Якщо ваш застосунок зареєстровано як багатоклієнтський, користувачі з інших клієнтів можуть надати згоду на делеговані дозволи під час запиту авторизації. Для дозволів, що потребують згоди адміністратора, її має надати адміністратор для свого клієнта. Додайте інструкції та URL згоди для адміністраторів клієнтів, щоб масово надавати згоду OAuth.

Які кроки з усунення несправностей варто виконати, якщо запит авторизації не вдається?

Переконайтеся, що застосунок зареєстровано в порталі Microsoft, URI перенаправлення збігається, client id і секрет правильні, області дійсні, а тип потоку та параметри PKCE (якщо використовуються) налаштовано коректно. Перевірте повідомлення про помилки, які повертають кінцеві точки авторизації або токенів, і зверніться до журналів клієнта та сервера. З конкретними кодами помилок можуть допомогти Stack Overflow і документація постачальника.

Як інтегрувати сторонні API, наприклад Google Calendar, із моїм зареєстрованим застосунком?

Для інтеграції Google Calendar або інших сторонніх API реалізуйте потоки авторизації OAuth 2.0, які вимагають ці постачальники. Ваш застосунок має запитувати правильні області для стороннього API і керувати окремими життєвими циклами токенів. Можливо, вам знадобиться окрема реєстрація клієнтського застосунку у кожного постачальника та координація отримання токенів доступу для кожної служби.

Коли варто використовувати потік коду пристрою або інші спеціальні потоки для певних пристроїв?

Використовуйте потік коду пристрою для пристроїв з обмеженим введенням, де браузер недоступний. Потік пристрою дозволяє користувачеві відкрити URL перевірки на іншому пристрої та пройти автентифікацію. Це один із спеціальних потоків авторизації, що підтримуються разом із потоком коду авторизації, потоком облікових даних клієнта та потоками оновлення токенів, щоб відповідати різним форматам застосунків.

Entities in this article

Application registration Microsoft Entra ID OAuth 2.0 Client secret Least privilege Microsoft Entra Conditional Access Exchange Online Fine-tuning

Related articles

RSS