Порталыңыздағы OAuth 2.0 күңгірт беру ағынын пайдалану

Ескерім

2022 жылдың 12 қазанынан бастап күшіне енеді, Power Apps порталдары — Power Pages. Қосымша ақпарат: Microsoft Power Pages енді жалпыға қолжетімді (блог)
Жақында Power Apps порталдары құжаттамасын Power Pages құжаттамасымен көшіреміз және біріктіреміз.

Бұл мүмкіндік тұтынушыға сыртқы API көрсеткіштеріне клиент тарапынан қоңыраулар шалуға және оларды OAuth күңгірт беру ағынымен қорғауға мүмкіндік береді. Ол қауіпсіз кіру токендерін алу үшін соңғы нүктені қамтамасыз етеді. Бұл токендерде OAuth 2.0 күңгірт беру ағынынан кейін рұқсат беру үшін сыртқы API көрсеткіштері пайдаланатын пайдаланушыны анықтаушы ақпарат болады. Жүйеге кірген пайдаланушының жеке басын куәландыратын ақпарат сыртқы AJAX қоңырауларына қауіпсіз түрде жіберіледі, бұл әзірлеушілерге аутентификация мәтінмәнінен өтуге көмектеседі және сонымен қатар пайдаланушыларға API көрсеткіштерін қорғауға көмектеседі.

OAuth 2.0 күңгірт беру ағынында клиент ИД таңбалауышын алу үшін шақыра алатын таңбалауыштың соңғы нүктелеріне қолдау көрсетіледі.

Арнаулы куәліктер

OAuth 2.0 күңгірт беру ағыны үшін әдепкі сертификатты пайдалану ұсынылмайды. OAuth 2.0 соңғы нүктесін пайдалану кезінде пайдаланушы сертификатын пайдалану қажет болады. Реттелетін куәлікті жүктеп салу үшін Power Platform басқару орталығын пайдаланыңыз. Пайдаланушы сертификатын жүктеп салғаннан кейін сайт параметрлерін төмендегідей жаңартуыңыз қажет:

  1. Портал параметрлері  бөліміне өтіп,  Сайт параметрлері тармағын таңдаңыз.

  2. Жаңа параметрді жасау үшін  Жаңа пәрменін таңдаңыз.

  3. Бар параметрді өңдеу үшін торда көрсетілген сайт параметрі тармағын таңдаңыз.

  4. Мәндерді көрсету:

    • Атауы:  CustomCertificates/ImplicitGrantflow
    • Веб-сайт: байланысты веб-сайт
    • Мән: жүктеп салынған пайдаланушы куәлігінің бас бармақ ізін пайдаланушы сертификатын басқару экранынан көшіріп, осы жерге қойыңыз. Мән жасырын беру ағыны үшін қандай сертификат пайдаланылатынын көрсетеді.
  5. Сақтау және жабу пәрменін таңдаңыз. Мәндері көрсетілген Жаңа сайт параметрлеріне арналған жалпы мәзір.

Таңбалауыштың соңғы нүктесі туралы мәліметтер

/token соңғы нүктесіне кейінгі сұрау жасау арқылы таңбалауышты ала аласыз. Таңбалауыштың соңғы нүктесінің URL мекенжайы: <portal_url>/_services/auth/token. Таңбалауыштың соңғы нүктесінде келесі параметрлерге қолдау көрсетіледі:

Параметр Міндетті ме? Сипаттамасы
client_id Жоқ Рұқсат етілген соңғы нүктеге қоңырау шалу кезінде өткен жол. Клиент ИД порталмен тіркелгеніне көз жеткізуіңіз қажет. Болмаса, қате көрсетіледі. Клиент ИД aud және appid параметрі сияқты таңбалауыштағы шағымдарға қосылды және бағдарламаға таңбалауыштың қайтарылғанын тексеру үшін клиенттер тарапынан пайдаланылуы мүмкін.
Максималды ұзындығы - 36 таңба. Тек әріптік-сандық таңбалар мен сызықшаға қолдау көрсетіледі.
redirect_uri Жоқ Аутентификация жауаптары жіберіліп алынатын порталдың URL мекенжайы. Қоңырауда пайдаланылатын белгілі бір client_id үшін тіркелуі қажет және тіркелгенмен нақты бірдей мән болуы керек.
күйі Жоқ Таңбалауыш жауабында қайтарылатын сұрауға қосылған мән. Ол пайдалану қажет мазмұнның жолы болуы мүмкін. Әдетте, кездейсоқ құрылған, бірегей мән торапаралық сұраудың жалған шабуылдарын болдырмауға пайдаланылады.
Максималды ұзындығы - 20 таңба.
осы жағдай Жоқ Шағым ретінде ИД таңбалауышқа қосылған клиент тарапынан жіберілген жол мәні. Одан кейін клиент таңбалауышты ойнату әрекеттерін азайту үшін осы мәнді тексере алады. Максималды ұзындығы - 20 таңба.
response_type No Бұл параметр мән ретінде тек token үшін қолдау көрсетіп, рұқсат етілетін соңғы нүктеге екінші сұрау жасамай, бағдарламаңызға рұқсат етілетін соңғы нүктеден қатынас таңбалауышын бірден алуға мүмкіндік береді.

Ескерім

client_id, redirect_uri, state және nonce параметрлері міндетті емес болғанымен, біріктірулерді қорғалған ету мақсатында оларды пайдалану ұсынылады.

Сәтті жауап

Таңбалауыштың соңғы нүктесі күй мен expires_in параметрін жауап тақырыптары ретінде және таңбалауышты пішін мәтінінде қайтарады.

Қате жауап

Таңбалауыштың соңғы нүктесіндегі қате келесі мәндермен JSON құжаты ретінде қайтарылады:

  • Қате ИД: қатенің бір мәнді идентификаторы.
  • Қате туралы хабар: аутентификация қатесі себебін анықтауға көмектесетін қате туралы хабар.
  • Өзара қатынас ИД: жөндеу мақсаттарына пайдаланылатын GUID. Егер диагностикалық тіркеу қосылса, сервер қатесінің журналдарында өзара қатынас ИД пайда болады.
  • уақыт белгісі: қате құрылған күн мен уақыт.

Тіркелген пайдаланушының әдепкі тілінде қате туралы хабар көрсетіледі. Егер пайдаланушы кірмесе, кіретін пайдаланушыға кіру беті көрсетіледі. Мысалы, қате жауап мынадай болып көрінеді:

{"ErrorId": "PortalSTS0001", "ErrorMessage": "Client Id provided in the request is not a valid client Id registered for this portal. Please check the parameter and try again.", "Timestamp": "4/5/2019 10:02:11 AM", "CorrelationId": "7464eb01-71ab-44bc-93a1-f221479be847" }

Рұқсат етілетін соңғы нүкте мәліметтері

Ескерім

Рұқсат етуһілетін соңғы нүкте ұсынылмайды. ИД таңбалауышын алу үшін таңбалауыштың соңғы нүктесі POST сұрауын пайдаланыңыз.]

Рұқсат етілетін соңғы нүктенің URL мекенжайы: <portal_url>/_services/auth/authorize. Рұқсат етілетін соңғы нүктеде келесі параметрлерге қолдау көрсетіледі:

Параметр Міндетті ме? Сипаттамасы
client_id Иә Рұқсат етілген соңғы нүктеге қоңырау шалу кезінде өткен жол. Клиент ИД порталмен тіркелгеніне көз жеткізуіңіз қажет. Болмаса, қате көрсетіледі. Клиент ИД aud және appid параметрі сияқты таңбалауыштағы шағымдарға қосылды және бағдарламаға таңбалауыштың қайтарылғанын тексеру үшін клиенттер тарапынан пайдаланылуы мүмкін.
Максималды ұзындығы - 36 таңба. Тек әріптік-сандық таңбалар мен сызықшаларға қолдау көрсетіледі.
redirect_uri Иә Аутентификация жауаптары жіберіліп алынатын порталдың URL мекенжайы. Қоңырауда пайдаланылатын белгілі бір client_id үшін тіркелуі қажет және тіркелгенмен нақты бірдей мән болуы керек.
күйі Жоқ Таңбалауыш жауабында қайтарылатын сұрауға қосылған мән. Ол пайдалану қажет мазмұнның жолы болуы мүмкін. Әдетте, кездейсоқ құрылған, бірегей мән торапаралық сұраудың жалған шабуылдарын болдырмауға пайдаланылады.
Максималды ұзындығы - 20 таңба.
осы жағдай Жоқ Шағым ретінде ИД таңбалауышқа қосылған клиент тарапынан жіберілген жол мәні. Одан кейін клиент таңбалауышты ойнату әрекеттерін азайту үшін осы мәнді тексере алады. Максималды ұзындығы - 20 таңба.
response_type No Рұқсат етілетін соңғы нүктеге екінші сұрау жасамай, бағдарламаңызға рұқсат етілетін соңғы нүктеден қатынас таңбалауышын бірден алуға мүмкіндік беретін бұл параметр мән ретінде тек token үшін қолдау көрсетеді.

Сәтті жауап

Рұқсат етілетін соңғы нүкте жауап URL мекенжайындағы келесі мәндерді үзінді ретінде қайтарады:

  • таңбалауыш: таңбалауыш порталдың жеке кілтімен сандық қол қойылатын JSON веб-таңбалауышы (JWT) ретінде қайтарылады.
  • күйі: егер сұрауға күй параметрі қосылса, жауапта бір мән пайда болуы керек. Бағдарлама сұрау мен жауаптағы күй мәндерінің бірдей екендігін тексеруі керек.
  • expires_in: қатынас таңбалауышы жарамды уақыт ұзақтығы (секунд).

Мысалы, сәтті жауап мынадай болып көрінеді:

GET https://aadb2cplayground.azurewebsites.net/#token=eyJ0eXAiOiJKV1QiLCJhbGciOI1NisIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q&expires_in=3599&state=arbitrary_data_you_sent_earlier

Қате жауап

Рұқсат етілетін соңғы нүктедегі қате келесі мәндермен JSON құжаты ретінде қайтарылады:

  • Қате ИД: қатенің бір мәнді идентификаторы.
  • Қате туралы хабар: аутентификация қатесі себебін анықтауға көмектесетін қате туралы хабар.
  • Өзара қатынас ИД: жөндеу мақсаттарына пайдаланылатын GUID. Егер диагностикалық тіркеу қосылса, сервер қатесінің журналдарында өзара қатынас ИД пайда болады.
  • уақыт белгісі: қате құрылған күн мен уақыт.

Тіркелген пайдаланушының әдепкі тілінде қате туралы хабар көрсетіледі. Егер пайдаланушы кірмесе, кіретін пайдаланушыға кіру беті көрсетіледі. Мысалы, қате жауап мынадай болып көрінеді:

{"ErrorId": "PortalSTS0001", "ErrorMessage": "Client Id provided in the request is not a valid client Id registered for this portal. Please check the parameter and try again.", "Timestamp": "4/5/2019 10:02:11 AM", "CorrelationId": "7464eb01-71ab-44bc-93a1-f221479be847" }

ИД таңбалауышын тексеру

Пайдаланушы аутентифкациялауға ИД таңбалауышын алу жеткіліксіз; сонымен қатар, таңбалауыш қолтаңбасын тексеру және бағдарлама талаптары негізінде таңбалауыштағы шағымдарды тексеру қажет. Әлеуметтік таңбалауыштың соңғы нүктесі портал берген таңбалауыш қолтаңбасын тексеруге пайдаланылуы мүмкін порталдың әлеуметтік кілтін береді. Әлеуметтік таңбалауыштың соңғы нүктесінің URL мекенжайы: <portal_url>/_services/auth/publickey.

Күңгірт беру ағынын қосу немесе өшіру

Әдепкі бойынша күңгірт беру ағыны қосулы. Күңгірт беру ағынын өшіру қажет болса, Connector/ImplicitGrantFlowEnabled торабы параметрінің мәнін Жалған күйіне орнатыңыз.

Бұл сайт параметрі порталыңызда қолжетімсіз болса, жаңа сайт параметрін тиісті мәнмен жасауыңыз қажет.

Таңбалауыш жарамдылығын теңшеу

Әдепкі бойынша таңбалауыш 15 минутқа жарамды. Егер таңбалауыш жарамдылығын өзгерту қажет болса, ImplicitGrantFlow/TokenExpirationTime торабы параметрінің мәнін талап етілетін мәнге орнатыңыз. Мәні секундпен көрсетілуі қажет. Максималды мәні 1 сағат, ал минималды мәні 1 минут болуы қажет. Егер дұрыс емес мән көрсетілсе (мысалы, әріптік-сандық таңбалар), 15 минут әдепкі мәні қолданылады. Егер максималды мәннен үлкен немесе минималды мәннен кіші мән көрсетілсе, әдепкі бойынша максималды және минималды мәндер пайдаланылады.

Мысалы, таңбалауыш жарамдылығын 30 минутқа орнату үшін, ImplicitGrantFlow/TokenExpirationTime торабы параметрінің мәнін 1800 күйіне орнатыңыз. Таңбалауыш жарамдылығын 1 сағатқа орнату үшін, ImplicitGrantFlow/TokenExpirationTime торабы параметрінің мәнін 3600 күйіне орнатыңыз.

Күңгірт беру ағыны үшін клиент идентификаторын тіркеу

Осы ағын рұқсат етілетін порталмен клиент идентификаторын тіркеуіңіз қажет. Клиент идентификаторын тіркеу үшін, келесі торап параметрлерін жасауыңыз қажет:

Сайт параметрі Мәні
ImplicitGrantFlow/RegisteredClientId Осы порталға рұқсат етілетін жарамды клиент идентификаторы мәндері. Мәндер нүктелі үтірмен бөлінуі қажет және әріптік-сандық таңбалар мен сызықшалардан тұруы қажет. Максималды ұзындығы - 36 таңба.
ImplicitGrantFlow/{ClientId}/RedirectUri Белгілі бір клиент идентификаторына рұқсат етілетін жарамды қайта бағыттау URI. Мәндер нүктелі үтірмен бөлінуі қажет. Берілген URL мекенжайы порталдың жарамды веб-беті болуы қажет.

Үлгі коды

OAuth 2.0 күңгірт беруді Power Apps порталдарының API мекенжайларымен пайдалануды бастау үшін, келесі үлгі кодын пайдалануға болады.

Порталдағы OAuth таңбалауышын сыртқы веб-API мекенжайымен пайдалану

Бұл үлгі ASP.NET платформасына негізделген жоба болып табылады және Power Apps порталдарында берілген идентификатор таңбалауышын тексеру үшін пайдаланылады. Толық үлгіні мына жерден табуға болады: Порталдағы OAuth таңбалауышын сыртқы веб-API мекенжайымен пайдалану.

Таңбалауыштың соңғы нүктесінің үлгісі

Бұл үлгіде Power Apps порталдарында таңбалауыштың соңғы нүктесі арқылы идентификатор таңбалауышын алу үшін, аутентификация таңбалауышын алу функциясын пайдалану жолы көрсетілген. Үлгіні мына жерден табуға болады: Таңбалауыштың соңғы нүктесінің үлгісі.

Ескерім

Сіз құжат тіліңіздің артықшылықтары туралы айта аласыз ба? Қысқа сауалнамаға қатысыңыз. (бұл сауалнама ағылшын тілінде екеніне назар аударыңыз)

Сауалнама шамамен жеті минут уақытыңызды алады. Жеке деректер жиналмайды (құпиялылық туралы мәлімдеме).