OAuth 2.0 предлага множество режими на авторизация, сред които Authorization Code Grant е най-често използваният и сигурен. code_challenge е функция с подобрена сигурност в този режим, основно използвана за механизма PKCE (Proof Key for Code Exchange).
Какво е PKCE?
PKCE (Proof Key for Code Exchange) е разширение, предназначено да повиши сигурността на OAuth 2.0 модела на авторизационния код, особено когато се използва в публични клиенти като JavaScript приложения или мобилни приложения, работещи в браузъри. PKCE предотвратява прихващане и злоупотреба с авторизационни кодове чрез добавяне на допълнителна стъпка за удостоверяване към заявките за авторизация.
code_challenge Роля
code_challenge е част от механизма PKCE, генериран и изпратен по време на фазата на заявка за авторизация. Той се базира на тайна стойност (наречена code_verifier), трансформирана от хеширащ алгоритъм като S256. Целта на code_challenge е да осигури валидационна основа за последващи заявки за токени, без да се излага директно code_verifier.
Генериране и използване на code_challenge и code_verifier
Поколение code_verifier: code_verifier е низ, с висока ентропия, произволно генерирана струна,Дължина на знака (между 43 и 128). По подразбиране стойността е 43。
Поколение code_challenge: Използвайки code_verifier, code_challenge се генерира чрез хеширащ алгоритъм (като S256). За S256 code_challenge е Base64 URL кодирането на code_verifier SHA-256 хеш, но = допълващият символ от кодирането трябва да бъде премахнат, а дължината на изхода трябва да е 43 знака (тъй като след Base64 URL кодиране всеки 4 символа представлява 3 байта, но последният блок може да е по-малък от 4 знака, така че дължината може леко да варира след премахване = символи).
Използвайте code_challenge при заявки за авторизация: При иницииране на заявка за авторизация, code_challenge се изпраща като един от параметрите на заявката към сървъра за упълномощаване.
Използване на code_verifier в заявки за токени: Когато сървърът за авторизация върне кода за авторизация, клиентът използва този код заедно с предварително генерирания code_verifier, за да поиска достъп до крайната точка на токена. Сървърът за авторизация проверява дали code_challenge и code_verifier съвпадат, като гарантира, че заявката е инициирана от оригиналния клиент.
Генериране на PKCE
Онлайн инструменти за генериране на PKCE:Входът към хиперлинк е видим.
C# кодът се генерира по следния начин:
Както е показано по-долу:
Препратка:
Входът към хиперлинк е видим.
Входът към хиперлинк е видим. |