ОАутх 2.0 је стандард који омогућава апликацијама трећих страна да безбедно приступају подацима из веб апликација. Можете га користити за преузимање података укључујући информације о профилу, распореде итд. који се хостује на другим веб апликацијама као што су Фацебоок, Гоогле и ГитХуб. Услуга то може да уради у име корисника без излагања његових акредитива апликацији треће стране.

Научите како да имплементирате ОАутх у Екпресс апликацију користећи ГитХуб као ОАутх добављача у неколико корака.

ОАутх ток

У типичном току ОАутх-а, ваша веб локација корисницима пружа опцију да се пријаве са својим налогом треће стране од провајдера као што је ГитХуб или Фацебоок. Корисник може започети овај процес кликом на одговарајуће дугме за пријаву на ОАутх.

Ово их преусмерава са ваше апликације на веб локацију ОАутх провајдера и представља им образац за сагласност. Образац за сагласност садржи све информације којима желите да приступите од корисника, а то могу бити њихове е-поруке, слике, распореди итд.

Ако корисник овласти вашу апликацију, трећа страна ће их преусмерити назад на вашу апликацију помоћу кода. Ваша апликација тада може да размени примљени код за приступни токен који може да користи за приступ доступним корисничким подацима.

instagram viewer

Имплементација овог тока у Екпресс апликацији укључује неколико корака.

Корак 1: Подешавање развојног окружења

Прво направите празан директоријум пројекта и цд у креирани директоријум.

На пример:

мкдир гитхуб-апп
цд гитхуб-апп

Затим иницијализујте нпм у свом пројекту тако што ћете покренути:

нпм инит -и

Ова команда ствара а пацкаге.јсон датотеку која садржи детаље о вашем пројекту као што су назив, верзија итд.

Овај водич ће садржати употребу ЕС6 модулског система. Подесите ово тако што ћете отворити свој пацкаге.јсон датотеку и наводећи "тип": "модул" у ЈСОН објекту.

Корак 2: Инсталирање зависности

Мораћете да инсталирате неколико зависности да би ваш сервер исправно функционисао:

  • ЕкпрессЈС: ЕкпрессЈС је НодеЈС оквир који пружа робустан скуп функција за веб и мобилне апликације. Коришћење Екпресс-а ће поједноставити процес креирања сервера.
  • Акиос: Акиос је ХТТП клијент заснован на обећањима. Овај пакет ће вам требати да направите ПОСТ захтев за приступни токен ГитХуб-у.
  • дотенв: дотенв је пакет који учитава променљиве окружења из .енв датотеке у процес.енв објекат. Требаће вам да сакријете важне информације о вашој апликацији.

Инсталирајте их тако што ћете покренути:

нпм инсталирај изразити акиос дотенв

Корак 3: Креирање Екпресс апликације

Морате да креирајте основни Екпресс сервер за руковање и упућивање захтева ОАутх провајдеру.

Прво, креирајте ан индек.јс датотеку у основном директоријуму вашег пројекта која садржи следеће:

// индек.јс
увоз изразити из "изразити";
увоз акиос из "акиос";
увоз * као дотенв из "дотенв";
дотенв.цонфиг();

конст апп = екпресс();
конст порт = процес.енв. ПОРТ || 3000

апп.листен (порт, () => {
конзола.Пријава(`Апликација ради на порту ${порт}`);
});

Овај код увози експрес библиотеку, инстанцира експресну инстанцу и почиње да слуша саобраћај на порту 3000.

Корак 4: Креирање руковаоца рута

Мораћете да креирате два руковаоца рута да бисте управљали ОАутх током. Први преусмерава корисника на ГитХуб и захтева ауторизацију. Други управља преусмеравањем назад на вашу апликацију и поставља захтев за приступни токен када корисник ауторизује вашу апликацију.

Први руковалац руте треба да преусмери корисника на https://github.com/login/oauth/authorize? параметрима.

Мораћете да проследите скуп потребних параметара на ГитХуб-ов ОАутх УРЛ, који укључују:

  • ИД клијента: Ово се односи на ИД који ваша ОАутх апликација добија када се региструје на ГитХуб-у.
  • Обим: Ово се односи на стринг који одређује количину приступа коју ОАутх апликација има за информације корисника. Листу доступних опсега можете пронаћи у ГитХуб-ова ОАутх документација. Овде ћете користити „прочитај: корисник” опсег, који даје приступ за читање података профила корисника.

Додајте следећи код у свој индек.јс фајл:

// индек.јс
апп.гет("/auth", (рек, рес) => {
// Чување параметара у објекту
конст парамс = {
Обим: "прочитај: корисник",
ИД клијента: процес.енв.ИД КЛИЈЕНТА,
};

// Конвертуј параметре у УРЛ кодиран стринг
конст урлЕнцодедПарамс = Нова УРЛСеарцхПарамс (парамс).тоСтринг();
рес.редирецт(` https://github.com/login/oauth/authorize?${урлЕнцодедПарамс}`);
});

Овај код имплементира први руковалац руте. Он складишти потребне параметре у објекту, претварајући их у формат кодиран УРЛ-ом користећи УРЛСеарцхПарамс АПИ. Затим додаје ове параметре ГитХуб-овом ОАутх УРЛ-у и преусмерава корисника на ГитХуб-ову страницу за сагласност.

Додајте следећи код у свој индек.јс фајл за други руковалац руте:

// индек.јс
апп.гет("/github-callback", (рек, рес) => {
конст { код } = рек.куери;

конст тело = {
ИД клијента: процес.енв.ИД КЛИЈЕНТА,
цлиент_сецрет: процес.енв.ЦЛИЕНТ_СЕЦРЕТ,
код,
};

дозволити аццессТокен;
цонст оптионс = { хеадерс: { аццепт: "апплицатион/јсон" } };

акиос
.пошта("https://github.com/login/oauth/access_token", тело, опције)
.онда((одговор) => респонсе.дата.аццесс_токен)
.онда((жетон) => {
аццессТокен = токен;
рес.редирецт(`/?токен=${токен}`);
})
.улов((ерр) => рес.статус(500).јсон({ ерр: ерр.мессаге }));
});

Други руковалац руте ће издвојити код враћен са ГитХуб-а у рек.куери објекат. Затим прави ПОСТ захтева коришћење Акиос до " https://github.com/login/oauth/access_token" са кодом, ИД клијента, и цлиент_сецрет.

Тхе цлиент_сецрет је приватни стринг који ћете генерисати када креирате ГитХуб ОАутх апликацију. Када аццесс_токен је успешно преузет, чува се у променљивој за каснију употребу. Корисник је коначно преусмерен на вашу апликацију са аццесс_токен.

Корак 5: Креирање ГитХуб апликације

Затим ћете морати да креирате ОАутх апликацију на ГитХуб-у.

Прво се пријавите на свој ГитХуб налог, а затим идите на Подешавања, померите се надоле до Подешавања програмераи изаберите ОАутх апликације. На крају, кликните на „Региструјте нову апликацију.”

ГитХуб ће вам пружити нови ОАутх образац за пријаву као што је овај:

Попуните обавезна поља жељеним детаљима. „УРЛ почетне странице" требало би " http://localhost: 3000”. Ваш “УРЛ за повратни позив ауторизације" требало би " http://localhost: 3000/гитхуб-цаллбацк”. Такође можете опционо да омогућите ток уређаја, омогућавајући вам да овластите кориснике за апликацију без главе, као што је ЦЛИ алат или Гит менаџер акредитива.

Ток уређаја је у јавној бета верзији и подложан је променама.

Коначно, притисните Региструјте апликацију дугме.

ГитХуб ће вас упутити на страницу са вашим ИД клијента и опцију за генерисање вашег цлиент_сецрет. Копирај своје ИД клијента, генеришите свој цлиент_сецрет, и копирајте га такође.

Направите .енв датотеку и чувати ИД клијента и цлиент_сецрет унутар тога. Именујте ове променљиве ЦЛИЕНТ_ИД и ЦЛИЕНТ_СЕЦРЕТ респективно.

Ваш ОАутх ток је сада завршен и сада можете да шаљете захтеве са токеном за приступ за читање корисничких података ( Обим који сте раније навели).

Важност ОАутх 2.0

Коришћење ОАутх 2.0 у вашој апликацији у великој мери поједностављује задатак имплементације тока аутентификације. Он штити корисничке податке ваших клијената помоћу стандарда Сецуре Соцкетс Лаиер (ССЛ), осигуравајући да они остану приватни.