دسترسی به توکن ها باعث می شود تا مشتریان بتوانند با امنیت با API های محافظت شده در وب تماس بگیرند. نشانه های دسترسی توسط API های وب برای انجام تأیید اعتبار و مجوز استفاده می شود.
طبق مشخصات OAUTH ، نشانه های دسترسی رشته های مات و بدون فرمت مشخص هستند. برخی از ارائه دهندگان هویت (IDP) از راهنما استفاده می کنند و برخی دیگر از حباب های رمزگذاری شده استفاده می کنند. قالب نشانه دسترسی می تواند به نحوه پیکربندی API که توکن را می پذیرد بستگی داشته باشد.
API های سفارشی که توسط توسعه دهندگان در پلت فرم هویت مایکروسافت ثبت شده اند می توانند از بین دو قالب مختلف توکن های وب JSON (JWTS) به نام V1. 0 و v2. 0 انتخاب کنند. API های توسعه یافته مایکروسافت مانند Microsoft Graph یا API در Azure قالب های اختصاصی دیگری دارند. این قالبهای اختصاصی ممکن است نشانه های رمزگذاری شده ، JWT یا نشانه های خاص JWT مانند که اعتبار آنها را تأیید نمی کنند ، رمزگذاری شوند.
مشتریان باید با دسترسی به نوک ها به عنوان رشته های مات رفتار کنند زیرا محتوای نشانه فقط برای API در نظر گرفته شده است. فقط برای اهداف اعتبار سنجی و اشکال زدایی ، توسعه دهندگان می توانند JWT ها را با استفاده از سایتی مانند JWT. MS رمزگشایی کنند. نشانه هایی که برای یک API مایکروسافت دریافت می شوند ، ممکن است همیشه JWT نباشند و همیشه نمی توان رمزگشایی کرد.
برای جزئیات بیشتر در مورد آنچه در داخل نشانه دسترسی است ، مشتریان باید از داده های پاسخ Token که با نشانه دسترسی به مشتری بازگردانده می شوند ، استفاده کنند. هنگامی که مشتری درخواست یک نشانه دسترسی می کند ، پلت فرم هویت مایکروسافت نیز برخی از ابرداده ها را در مورد نشانه دسترسی برای مصرف برنامه بازگرداند. این اطلاعات شامل زمان انقضا نشانه دسترسی و دامنه هایی است که برای آن معتبر است. این داده ها به برنامه اجازه می دهد تا بدون نیاز به تجزیه نشانه دسترسی ، ذخیره هوشمندانه از نشانه های دسترسی را انجام دهد.
بخش های زیر را ببینید تا بدانید که چگونه یک API می تواند اعتبار خود را در یک نشانه دسترسی تأیید و استفاده کند.
کلیه مستندات موجود در این صفحه ، به جز مواردی که ذکر شد ، فقط مربوط به نشانه های صادر شده برای API های ثبت شده است. این در مورد نشانه های صادر شده برای API های متعلق به مایکروسافت صدق نمی کند ، و همچنین نمی توان از این نشانه ها برای اعتبارسنجی چگونگی انتشار سیستم عامل هویت مایکروسافت برای یک API ثبت شده استفاده کرد.
قالبهای توکن
دو نسخه از نشانه های دسترسی در پلت فرم هویت مایکروسافت وجود دارد: v1. 0 و v2. 0. این نسخه ها ادعاهایی را که در این نشانه وجود دارد تعیین می کند و اطمینان حاصل می کند که یک API وب می تواند محتوای نشانه را کنترل کند.
API های وب یکی از نسخه های زیر را به عنوان پیش فرض در هنگام ثبت نام انتخاب می کنند:
نسخه 1. 0 برای برنامه های فقط Azure AD. مثال زیر یک نشانه v1. 0 را نشان میدهد (این نمونه نشانه اعتبارسنجی نمیشود زیرا کلیدها قبل از انتشار چرخیده و اطلاعات شخصی حذف شده است):
نسخه 2. 0 برای برنامه هایی که از حساب های مصرف کننده پشتیبانی می کنند. مثال زیر یک نشانه v1. 0 را نشان میدهد (این نمونه نشانه اعتبارسنجی نمیشود زیرا کلیدها قبل از انتشار چرخیده و اطلاعات شخصی حذف شده است):
نسخه را می توان با ارائه مقدار مناسب برای تنظیمات accessTokenAcceptedVersion در مانیفست برنامه برای برنامه ها تنظیم کرد. مقادیر null و 1 منجر به v1. 0 توکن و مقدار 2 در v2. 0 توکن می شود.
مالکیت رمزی
دو طرف در یک درخواست توکن دسترسی دخیل هستند: مشتری که توکن را درخواست می کند و منبع (Web API) که توکن را می پذیرد. ادعای aud در یک نشانه نشان دهنده منبعی است که توکن برای آن در نظر گرفته شده است (مخاطبان آن). مشتریان از رمز استفاده می کنند اما نباید آن را بفهمند یا تلاشی برای تجزیه آن کنند. منابع رمز را می پذیرند.
پلتفرم هویت مایکروسافت از صدور هر نسخه رمزی از هر نقطه پایانی نسخه پشتیبانی می کند - آنها به هم مرتبط نیستند. هنگامی که accessTokenAcceptedVersion روی 2 تنظیم می شود، کلاینتی که نقطه پایانی v1. 0 را برای دریافت نشانه ای برای آن منبع فرا می خواند، یک نشانه دسترسی v2. 0 دریافت می کند.
منابع همیشه با استفاده از ادعای aud مالک توکن های خود هستند و تنها برنامه هایی هستند که می توانند جزئیات توکن خود را تغییر دهند.
ادعاها در نشانه های دسترسی
JWT ها به سه قسمت تقسیم می شوند:
- سربرگ - اطلاعاتی در مورد نحوه اعتبار سنجی توکن شامل اطلاعاتی در مورد نوع توکن و نحوه امضای آن ارائه می دهد.
- Payload - شامل تمام داده های مهم در مورد کاربر یا برنامه ای است که سعی در تماس با سرویس دارد.
- امضا - ماده خامی است که برای تأیید اعتبار توکن استفاده می شود.
هر قطعه با یک نقطه ( . ) از هم جدا می شود و به طور جداگانه Base64 کدگذاری می شود.
ادعاها فقط در صورتی وجود دارند که مقداری برای پر کردن آن وجود داشته باشد. یک برنامه نباید به وجود ادعا وابسته باشد. مثلاً pwd_exp (هر مستأجری برای منقضی شدن به رمز عبور نیاز ندارد) و family_name (جریان اعتبار مشتری از طرف برنامههایی است که نام ندارند). ادعاهایی که برای اعتبارسنجی رمز دسترسی استفاده میشوند همیشه وجود دارند.
برخی از ادعاها برای کمک به پلتفرم هویت مایکروسافت برای ایمن کردن توکن ها برای استفاده مجدد استفاده می شود. این ادعاها بهعنوان غیرشفاف برای مصرف عمومی در توضیحات علامتگذاری شدهاند. این ادعاها ممکن است در یک نشانه ظاهر شوند یا نباشند، و موارد جدید ممکن است بدون اطلاع قبلی اضافه شوند.
ادعاهای سربرگ
مطالبه | قالب | شرح |
---|---|---|
تایپ کنید | رشته - همیشه JWT | نشان می دهد که توکن یک JWT است. |
الگ | رشته | الگوریتمی را که برای امضای نشانه استفاده شده است ، به عنوان مثال Rs256 نشان می دهد. |
بچه | رشته | اثر انگشت را برای کلید عمومی که می تواند برای اعتبارسنجی این امضای نشانه استفاده شود ، مشخص می کند. ساطع شده در هر دو نشان دسترسی v1. 0 و v2. 0. |
X5T | رشته | عملکرد همان (در استفاده و ارزش) به عنوان بچه است. X5T و یک ادعای میراث است که فقط در نشانه های دسترسی V1. 0 برای اهداف سازگاری منتشر شده است. |
مطالبات بارگذاری
مطالبه | قالب | شرح |
---|---|---|
حسابرسی | رشته ، شناسه برنامه کاربردی یا راهنما | مخاطب مورد نظر این نشانه را مشخص می کند. API باید این مقدار را تأیید کند و اگر مقدار مطابقت نداشته باشد ، نشانه را رد می کند. در نشانه های v2. 0 ، این مقدار همیشه شناسه مشتری API است. در توکن های v1. 0 ، می تواند شناسه مشتری یا منابع URI در درخواست باشد. این مقدار می تواند به نحوه درخواست مشتری از توکن بستگی داشته باشد. |
سر | رشته ، یک سرویس توکن امنیتی (STS) URI | STS را که ساختار و بازگرداندن نشانه را نشان می دهد ، و مستاجر تبلیغاتی Azure که در آن کاربر تأیید شده است ، شناسایی می کند. اگر نشانه صادر شده یک نشانه v2. 0 باشد (به ادعای ver مراجعه کنید) ، URI به /vv2. 0 پایان می یابد. راهنمایی که نشان می دهد کاربر کاربر مصرف کننده از حساب مایکروسافت است 9188040D-6C67-4C5B-B112-36A304B66DAD است. برنامه می تواند از بخش GUID ادعا برای محدود کردن مجموعه مستاجرین که می توانند وارد برنامه شوند ، در صورت لزوم استفاده کند. |
با هماهنگی | رشته ، معمولاً یک uri sts | ارائه دهنده هویت را که موضوع توکن را تأیید کرده است ، ثبت می کند. این مقدار با ارزش ادعای صادرکننده یکسان است مگر اینکه حساب کاربری در همان مستاجر با صادرکننده ، مانند مهمانان قرار نداشته باشد. اگر این ادعا وجود نداشته باشد ، به جای آن می توان از ارزش ISS استفاده کرد. برای حساب های شخصی که در یک زمینه سازمانی مورد استفاده قرار می گیرد (به عنوان مثال ، یک حساب شخصی که به یک مستاجر تبلیغات Azure دعوت شده است) ، ادعای IDP ممکن است "Live. com" یا STS URI باشد که حاوی مستاجر حساب مایکروسافت 9188040D-6C67-4C5B-B112 است-36A304B66DAD. |
iat | int ، یک جدول زمانی UNIX | مشخص می کند چه موقع تأیید هویت این نشانه رخ داده است. |
NBF | int ، یک جدول زمانی UNIX | زمانی را که JWT نباید برای پردازش پذیرفته شود ، مشخص می کند. |
بیرونی | int ، یک جدول زمانی UNIX | زمان انقضا را مشخص می کند یا پس از آن JWT نباید برای پردازش پذیرفته شود. یک منبع ممکن است قبل از این زمان نشانه را رد کند. این رد می تواند در صورت نیاز به تغییر احراز هویت یا ابطال توکن رخ دهد. |
ائو | رشته مات | ادعای داخلی که توسط Azure AD برای ضبط داده ها برای استفاده مجدد از نشانه استفاده شده است. منابع نباید از این ادعا استفاده کنند. |
کماندار | رشته ، 0 یا 1 ، فقط در توکن های v1. 0 وجود دارد | مقدار 0 برای ادعای "کلاس متن احراز هویت" نشان می دهد که احراز هویت کاربر نهایی الزامات ISO/IEC 29115 را برآورده نمی کند. |
امرو | json array of strings ، فقط در نشانه های v1. 0 وجود دارد | نحوه تأیید موضوع توکن را مشخص می کند. |
مروارید | رشته ، یک راهنما ، فقط در نشانه های v1. 0 وجود دارد | شناسه برنامه مشتری با استفاده از توکن. برنامه می تواند به عنوان خود یا از طرف کاربر عمل کند. شناسه برنامه به طور معمول یک شیء برنامه را نشان می دهد ، اما همچنین می تواند یک شیء اصلی سرویس را در Azure AD نشان دهد. |
AZP | رشته ، یک راهنما ، فقط در نشانه های v2. 0 وجود دارد | جایگزینی برای AppID. شناسه برنامه مشتری با استفاده از توکن. برنامه می تواند به عنوان خود یا از طرف کاربر عمل کند. شناسه برنامه به طور معمول یک شیء برنامه را نشان می دهد ، اما همچنین می تواند یک شیء اصلی سرویس را در Azure AD نشان دهد. |
قشر | رشته ، یک 0 ، 1 یا 2 ، فقط در نشانه های v1. 0 وجود دارد | نحوه تأیید اعتبار مشتری را نشان می دهد. برای یک مشتری عمومی ، مقدار 0 است. اگر از شناسه مشتری و راز مشتری استفاده شود ، مقدار 1 است. اگر از گواهی مشتری برای تأیید اعتبار استفاده شده باشد ، مقدار 2 است. |
AZPACR | رشته ، 0 ، 1 یا 2 ، فقط در نشانه های v2. 0 وجود دارد | جایگزینی برای Appidacr. نحوه تأیید اعتبار مشتری را نشان می دهد. برای یک مشتری عمومی ، مقدار 0 است. اگر از شناسه مشتری و راز مشتری استفاده شود ، مقدار 1 است. اگر از گواهی مشتری برای تأیید اعتبار استفاده شده باشد ، مقدار 2 است. |
نام ترجیحی_ | رشته ، فقط در نشانه های v2. 0. | نام کاربری اصلی که نمایانگر کاربر است. این مقدار می تواند یک آدرس ایمیل ، شماره تلفن یا نام کاربری عمومی بدون قالب مشخص باشد. مقدار قابل تغییر است و ممکن است با گذشت زمان تغییر کند. از آنجا که مقدار قابل تغییر است ، نباید برای تصمیم گیری در مورد مجوز استفاده شود. این مقدار را می توان برای نکات نام کاربری ، و در UI قابل خواندن به عنوان یک نام کاربری استفاده کرد. برای دریافت این ادعا دامنه مشخصات لازم است. |
نام | رشته | یک مقدار قابل خواندن انسانی را فراهم می کند که موضوع نشانه را مشخص می کند. این مقدار منحصر به فرد نیست ، قابل تغییر است و فقط برای اهداف نمایش استفاده می شود. برای دریافت این ادعا دامنه مشخصات لازم است. |
SCP | رشته ، یک لیست جدا شده فضایی از Scopes | مجموعه ای از دامنه های در معرض برنامه ای که درخواست مشتری درخواست کرده است (و دریافت کرده است) رضایت داده است. برنامه باید تأیید کند که این دامنه ها معتبر هستند که در معرض برنامه قرار دارند و بر اساس ارزش این دامنه ها تصمیمات مجوز می گیرند. فقط برای نشانه های کاربر گنجانده شده است. |
نقش | مجموعه رشته ها ، لیستی از مجوزها | مجموعه مجوزهای در معرض برنامه که درخواست درخواست کننده یا کاربر به شما اجازه تماس داده شده است. برای نشانه های برنامه ، این مجموعه از مجوزها در طول جریان اعتبار مشتری به جای دامنه کاربر استفاده می شود. برای نشانه های کاربر ، این مجموعه از مقادیر با نقشهایی که کاربر در برنامه هدف به آن اختصاص داده شده است ، جمع شده است. |
عذاب | مجموعه ای از راهنماهای RoletemplateId | از بخش نقش های موجود در Azure AD در نقش های داخلی ، نقش های گسترده ای را که به این کاربر اختصاص داده شده است ، نشان می دهد. این ادعا بر اساس هر برنامه ، از طریق ویژگی GroupMembershipClaims از آشکار برنامه پیکربندی شده است. تنظیم آن روی همه یا دایرکتوری لازم است. ممکن است در نشانه های به دست آمده از طریق جریان ضمنی به دلیل نگرانی های طول توکن وجود نداشته باشد. |
گروه ها | JSON آرایه راهنما | شناسه های شیء را ارائه می دهد که نمایانگر عضویت در گروه موضوع است. این مقادیر منحصر به فرد هستند و می توانند با خیال راحت برای مدیریت دسترسی ، مانند اجرای مجوز برای دسترسی به یک منبع ، مورد استفاده قرار گیرند. گروه های موجود در این گروه ها ادعا می کنند که از طریق ویژگی GroupMembershipClaims از آشکار برنامه ، به صورت هر برنامه پیکربندی می شوند. یک مقدار تهی همه گروه ها را حذف می کند ، یک مقدار از گروه امنیتی فقط شامل عضویت در گروه امنیتی Active Directory است و ارزش همه شامل گروه های امنیتی و لیست توزیع مایکروسافت 365 است. |
گروه ادعای بیش از حد
Azure AD تعداد شناسه های شیء را که در گروه ها شامل می شود ، محدود می کند و ادعا می کنند در حد اندازه هدر HTTP باقی می مانند. اگر کاربر عضو گروه های بیشتری نسبت به حد مجاز بیش از حد باشد (150 برای توکن های SAML ، 200 برای نشانه های JWT و تنها 6 در صورت استفاده از جریان ضمنی) ، آنگاه Azure AD ادعای گروه ها را در نشانه منتشر نمی کند. درعوض ، این شامل یک ادعای بیش از حد در نشانه است که نشان دهنده برنامه برای پرس و جو از API Microsoft Graph برای بازیابی عضویت گروه کاربر است.
برای کمک به آزمایش سناریوهای اضافی ، از FulkCreateGroups. ps1 ارائه شده در پوشه Scripts App Creation استفاده کنید.
v1. 0 ادعاهای اساسی
ادعاهای زیر در صورت وجود در نشانه های v1. 0 گنجانده شده است ، اما به طور پیش فرض در نشانه های v2. 0 گنجانده نشده است. برای استفاده از این ادعاها برای v2. 0 ، برنامه آنها را با استفاده از مطالبات اختیاری درخواست می کند.
مطالبه | قالب | شرح |
---|---|---|
منظر | رشته | آدرس IP کاربر تأیید شده از آن. |
onprem_sid | رشته ، با فرمت SID | در مواردی که کاربر تأیید اعتبار در محل داشته باشد ، این ادعا SID خود را ارائه می دهد. از این ادعا برای مجوز در برنامه های میراث استفاده کنید. |
PWD_EXP | int ، یک جدول زمانی UNIX | نشان می دهد چه موقع رمز عبور کاربر منقضی می شود. |
PWD_URL | رشته | URL که در آن کاربران می توانند برای تنظیم مجدد رمز عبور خود ارسال شوند. |
in_corp | وابسته به بولی | سیگنال اگر مشتری از شبکه شرکت وارد سیستم می شود. اگر اینگونه نباشند ، این ادعا گنجانده نشده است. |
نام مستعار | رشته | نام دیگری برای کاربر ، جدا از نام اول یا نام خانوادگی. |
نام خانوادگی | رشته | نام خانوادگی ، نام خانوادگی یا نام خانوادگی کاربر را مطابق با شیء کاربر تعریف می کند. |
داده شده_ نام | رشته | نام اول یا مشخص شده کاربر را ارائه می دهد ، همانطور که در شیء کاربر تنظیم شده است. |
بالا | رشته | نام کاربری کاربر. ممکن است یک شماره تلفن ، آدرس ایمیل یا رشته بدون شکل باشد. فقط باید برای اهداف نمایش و ارائه نکات نام کاربری در سناریوهای تأیید مجدد استفاده شود. |
ادعای AMR
هویت ها می توانند به روش های مختلفی تأیید شوند ، که ممکن است مربوط به برنامه باشد. ادعای AMR آرایه ای است که می تواند شامل چندین مورد مانند ["MFA" ، "RSA" ، "PWD"] باشد ، برای تأیید هویتی که هم از یک رمز عبور و هم از برنامه تأیید کننده استفاده می کند.
ارزش | شرح |
---|---|
PWD | احراز هویت رمز عبور ، یا رمز عبور مایکروسافت کاربر یا راز مشتری از یک برنامه. |
RSA | احراز هویت بر اساس اثبات یک کلید RSA ، به عنوان مثال با برنامه تأیید اعتبار مایکروسافت انجام شد. این مقدار همچنین نشان می دهد که آیا احراز هویت توسط یک JWT خود امضا شده با گواهی خدمات X509 انجام شده است. |
OTP | رمز عبور یک بار با استفاده از یک ایمیل یا پیام متنی. |
تغذیه | از ادعای احراز هویت فدرال (مانند JWT یا SAML) استفاده شد. |
ویا | احراز هویت یکپارچه ویندوز |
MFA | از احراز هویت چند عاملی استفاده شد. هنگامی که این ادعا وجود دارد ، سایر روش های احراز هویت گنجانده شده است. |
ngcmfa | معادل MFA ، برای تهیه انواع معتبر پیشرفته استفاده می شود. |
Wiaormfa | کاربر از ویندوز یا اعتبار MFA برای تأیید اعتبار استفاده کرد. |
هیچ یک | هیچ احراز هویت انجام نشده است. |
دسترسی به زندگی به طول عمر
طول عمر پیش فرض یک نشانه دسترسی متغیر است. هنگام صدور، به طول عمر پیش فرض یک نشانه دسترسی، مقدار تصادفی بین 60 تا 90 دقیقه (به طور متوسط 75 دقیقه) اختصاص داده می شود. این تنوع با گسترش تقاضای توکن دسترسی در یک زمان، انعطاف پذیری سرویس را بهبود می بخشد، که از افزایش ساعتی ترافیک به Azure AD جلوگیری می کند.
مستاجرانی که از دسترسی مشروط استفاده نمیکنند، طول عمر رمز دسترسی پیشفرض دو ساعت برای مشتریانی مانند Microsoft Teams و Microsoft 365 دارند.
طول عمر یک نشانه دسترسی را می توان تنظیم کرد تا کنترل کند که برنامه سرویس گیرنده هر چند وقت یک بار جلسه برنامه را منقضی می کند، و هر چند وقت یکبار نیاز به احراز هویت مجدد کاربر (به صورت بی صدا یا تعاملی) دارد. برای نادیده گرفتن تغییرات طول عمر نشانه دسترسی پیشفرض، با استفاده از طول عمر رمز قابل تنظیم (CTL) یک طول عمر نشانه دسترسی پیشفرض ثابت تنظیم کنید.
تغییرات طول عمر نشانه پیشفرض برای سازمانهایی اعمال میشود که ارزیابی دسترسی پیوسته (CAE) را فعال کردهاند. تغییرات طول عمر توکن پیشفرض حتی اگر سازمانها از سیاستهای CTL استفاده کنند، اعمال میشود. طول عمر توکن پیشفرض برای عمر طولانی توکن بین 20 تا 28 ساعت است. هنگامی که نشانه دسترسی منقضی میشود، مشتری باید از توکن تازهسازی استفاده کند تا بیصدا یک نشانه تازهسازی و توکن دسترسی به دست آورد.
سازمانهایی که از فرکانس ورود به سیستم دسترسی مشروط (SIF) برای اعمال مکرر ورود به سیستم استفاده میکنند، نمیتوانند تغییرات طول عمر نشانه دسترسی پیشفرض را لغو کنند. هنگامی که سازمانها از SIF استفاده میکنند، زمان بین درخواستهای اعتبار برای یک مشتری، طول عمر رمز است که از 60 تا 90 دقیقه به اضافه فاصله فرکانس ورود به سیستم متغیر است.
در اینجا مثالی از نحوه عملکرد تغییرات طول عمر رمز پیشفرض با فرکانس ورود به سیستم آورده شده است. فرض کنید یک سازمان تعداد دفعات ورود به سیستم را هر ساعت تنظیم می کند. فاصله واقعی ورود به سیستم بین 1 ساعت تا 2. 5 ساعت اتفاق میافتد، زیرا طول عمر توکن بین 60 تا 90 دقیقه (به دلیل تغییر طول عمر رمز) است.
اگر یک کاربر با نشانه ای با یک ساعت یک ساعته در 59 دقیقه یک ورود به سیستم تعاملی انجام دهد (درست قبل از فراتر از فرکانس ورود به سیستم) ، هیچ سریع اعتبار وجود ندارد زیرا ورود به سیستم زیر آستانه SIF است. اگر یک نشانه جدید با طول عمر 90 دقیقه صادر شود ، کاربر برای یک ساعت و نیم دیگر یک اعتبار اعتبار را نمی بیند. هنگامی که یک تلاش برای تجدید سکوت در طول عمر 90 دقیقه ای انجام می شود ، Azure AD به یک اعتبار اعتبار نیاز دارد زیرا طول کل جلسه از تنظیم فرکانس ورود به سیستم 1 ساعت فراتر رفته است. در این مثال ، تفاوت زمانی بین اعلان های اعتبار به دلیل فاصله SIF و تغییر طول عمر توکن 2. 5 ساعت خواهد بود.
تأیید نشانه ها
همه برنامه ها نباید نشانه ها را تأیید کنند. فقط در سناریوهای خاص باید برنامه ها را تأیید کنند:
- API های وب باید نشانه های دسترسی ارسال شده توسط مشتری را تأیید کنند. آنها فقط باید نشانه های حاوی ادعای AUD خود را بپذیرند.
- برنامه های وب محرمانه مانند ASP. NET Core باید قبل از دسترسی به داده های کاربر یا ایجاد جلسه ، نشانه های شناسه ارسال شده به آنها را با استفاده از مرورگر کاربر در جریان ترکیبی تأیید کنند.
اگر هیچ یک از سناریوهای فوق اعمال نشود ، برنامه از اعتبار سنجی این نشانه بهره نمی برد و در صورت تصمیم گیری بر اساس اعتبار نشانه ، ممکن است ریسک امنیتی و قابلیت اطمینان را ارائه دهد. مشتری های عمومی مانند برنامه های بومی یا تک صفحه ای از اعتبار سنجی نشانه ها سود نمی برند زیرا برنامه مستقیماً با IDP ارتباط برقرار می کند که در آن حفاظت SSL تضمین می کند که نشانه ها معتبر هستند.
API ها و برنامه های وب فقط باید نشانه هایی را که دارای ادعای AUD هستند که مطابق با برنامه باشد ، تأیید کنند. منابع دیگر ممکن است دارای قوانین اعتبار سنجی توکن سفارشی باشند. به عنوان مثال ، نشانه های نمودار مایکروسافت طبق این قوانین به دلیل قالب اختصاصی آنها اعتبار نمی یابد. اعتبار سنجی و پذیرش نشانه های موجود برای منبع دیگر نمونه ای از مشکل معاون سردرگم است.
اگر برنامه نیاز به اعتبار سنجی شناسه یا نشانه دسترسی داشته باشد ، ابتدا باید امضای نشانه و صادرکننده را در برابر مقادیر موجود در سند کشف OpenID اعتبار دهد. به عنوان مثال ، نسخه مستقل مستاجر این سند در https://login. microsoftonline. com/common/. well-known/openid-configuration واقع شده است.
میانافزار Azure AD دارای قابلیتهای داخلی برای اعتبارسنجی نشانههای دسترسی است، برای یافتن یکی به زبان مناسب به نمونهها مراجعه کنید. همچنین چندین کتابخانه منبع باز شخص ثالث برای تأیید اعتبار JWT وجود دارد. برای اطلاعات بیشتر در مورد کتابخانه های احراز هویت Azure AD و نمونه کد، به کتابخانه های احراز هویت مراجعه کنید.
اعتبار امضاء
یک JWT شامل سه بخش است که توسط . شخصیت. قسمت اول به عنوان سربرگ ، قسمت دوم به عنوان بدنه و قسمت سوم به عنوان امضا شناخته می شود. بخش امضا را می توان برای تأیید اعتبار توکن استفاده کرد تا بتواند توسط برنامه مورد اعتماد باشد.
توکن های صادر شده توسط Azure AD با استفاده از الگوریتم های رمزگذاری نامتقارن استاندارد صنعتی مانند RS256 امضا می شوند. هدر JWT حاوی اطلاعاتی درباره کلید و روش رمزگذاری مورد استفاده برای امضای توکن است:
ادعای alg نشاندهنده الگوریتمی است که برای امضای توکن استفاده شده است، در حالی که ادعای بچه نشاندهنده کلید عمومی خاصی است که برای اعتبارسنجی نشانه استفاده شده است.
در هر زمان معینی، Azure AD ممکن است با استفاده از هر یک از مجموعه خاصی از جفت کلید عمومی-خصوصی، یک نشانه شناسه امضا کند. Azure AD مجموعه کلیدهای ممکن را به صورت دورهای میچرخاند، بنابراین برنامه باید طوری نوشته شود که این تغییرات کلید را به طور خودکار مدیریت کند. یک فرکانس منطقی برای بررسی بهروزرسانیهای کلیدهای عمومی مورد استفاده توسط Azure AD هر 24 ساعت است.
با استفاده از سند فراداده OpenID Connect واقع در:
این را در یک مرورگر امتحان کنید: URL
اطلاعات زیر سند فراداده را توصیف می کند:
- یک شی JSON است که حاوی چندین بخش اطلاعات مفید است، مانند مکان نقاط پایانی مختلف مورد نیاز برای احراز هویت OpenID Connect.
- شامل یک jwks_uri است که مکان مجموعه کلیدهای عمومی را نشان می دهد که با کلیدهای خصوصی مورد استفاده برای امضای نشانه ها مطابقت دارند. کلید وب JSON (JWK) واقع در jwks_uri حاوی تمام اطلاعات کلید عمومی است که در آن لحظه خاص از زمان استفاده می شود. فرمت JWK در RFC 7517 توضیح داده شده است. برنامه می تواند از ادعای بچه در هدر JWT برای انتخاب کلید عمومی از این سند استفاده کند که مربوط به کلید خصوصی است که برای امضای یک نشانه خاص استفاده شده است. سپس می تواند اعتبار امضا را با استفاده از کلید عمومی صحیح و الگوریتم مشخص شده انجام دهد.
از ادعای کودک برای تأیید اعتبار توکن استفاده کنید. اگرچه توکنهای v1. 0 هم ادعای x5t و هم ادعای بچه را دارند، توکنهای v2. 0 فقط شامل ادعای بچه هستند.
انجام اعتبار سنجی امضا خارج از محدوده این سند است. بسیاری از کتابخانه های منبع باز برای کمک به اعتبار سنجی امضا در صورت لزوم در دسترس هستند. با این حال ، پلت فرم هویت مایکروسافت دارای یک برنامه امضای توکن در استانداردها است که کلیدهای امضای سفارشی هستند.
اگر برنامه در نتیجه استفاده از ویژگی نقشه برداری از کلیدهای امضاء سفارشی دارد ، یک پارامتر پرس و جو Appid را که شامل شناسه برنامه است برای دریافت یک JWKS_URI که به اطلاعات کلید امضای برنامه اشاره دارد ، اضافه کنید ، که باید برای اعتبار سنجی استفاده شود. به عنوان مثال: https://login. microsoftonline. com//. well-known/openid-configuration؟appid=6731De76-149ae-97BC-6EBA6914391E حاوی jwks_uri از htttps:. microsittonline/کلیدها؟ AppID = 6731DE76-14A6-49AE-97BC-6EBA6914391E.
مجوز مبتنی بر ادعاها
منطق تجاری برنامه ، مجوز مبتنی بر مطالبات را دیکته می کند. برخی از روشهای مجوز مشترک در زیر ذکر شده است.
اعتبار را تأیید کنید
برای اطمینان از اینکه کاربر قصد تماس با برنامه را دارد ، از ادعای AUD استفاده کنید. اگر شناسه منبع در ادعای AUD نیست ، آن را رد کنید.
تأیید مجوز کاربر
از نقش ها و ادعاهای WIDS استفاده کنید تا تأیید کند که کاربر مجوز تماس با API را دارد. به عنوان مثال ، یک مدیر ممکن است اجازه نوشتن به API را داشته باشد ، اما یک کاربر عادی نیست. بررسی کنید که TID در داخل توکن با شناسه مستاجر که برای ذخیره داده ها در API استفاده می شود مطابقت دارد.
هنگامی که یک کاربر داده ها را در API از یک مستاجر ذخیره می کند ، باید دوباره به آن مستاجر وارد شود تا به آن داده ها دسترسی پیدا کند. هرگز اجازه ندهید که داده ها در یک مستاجر از مستاجر دیگر دسترسی پیدا کنید.
از ادعای AMR استفاده کنید تا تأیید کند که کاربر MFA را انجام داده است. اجرای MFA با استفاده از دسترسی شرطی انجام می شود. اگر نقش یا ادعاهای گروهی در نشانه دسترسی درخواست شده است ، تأیید کنید که کاربر در گروه مجاز به انجام این عمل است.
برای نشانه های بازیابی شده با استفاده از جریان ضمنی ، نمودار مایکروسافت را برای این داده ها پرس و جو کنید ، زیرا اغلب برای قرار دادن در نشانه بسیار بزرگ است.
برای تعیین اینکه آیا کاربر در یک نشانه دسترسی باید به داده ها دسترسی داشته باشد ، از مقادیر ادعای ایمیل یا UPN استفاده نکنید. مقادیر ادعای قابل تغییر مانند این می تواند با گذشت زمان تغییر کند و آنها را برای مجوز ناامن و غیرقابل اعتماد می کند.
از مقادیر ادعای تغییر ناپذیر TID و SUB یا OID به عنوان یک کلید ترکیبی برای شناسایی منحصر به فرد داده های API و تعیین اینکه آیا کاربر باید به آن داده ها دسترسی پیدا کند ، استفاده کنید.
- خوب: tid + sub
- بهتر: TID + OID - OID در بین برنامه ها سازگار است ، بنابراین یک اکوسیستم برنامه ها می تواند دسترسی کاربر به داده ها را حسابرسی کند.
برای شناسایی داده های منحصر به فرد از شناسه های قابل خواندن و قابل خواندن مانند ایمیل یا UPN استفاده نکنید.
اعتبار ثبت نام را تأیید کنید
- از ادعای SCP استفاده کنید تا اعتبار خود را تأیید کند که کاربر مجوز برنامه تماس برای تماس با API شما را صادر کرده است.
- اطمینان حاصل کنید که مشتری تماس مجاز به تماس با API خود با استفاده از ادعای APPID (برای نشانه های V1. 0) یا ادعای AZP (برای نشانه های v2. 0) است.
- شما فقط باید این ادعاها را تأیید کنید (APPID ، AZP) اگر می خواهید API وب خود را محدود کنید که فقط توسط برنامه های از پیش تعیین شده (به عنوان مثال ، برنامه های خط تجارت یا API های وب که توسط جبهه های مشهور نامیده می شوند) خوانده شود. API ها قصد داشتند دسترسی از هر برنامه تماس را فراهم کنند و نیازی به اعتبار این ادعاها ندارند.
نشانه های کاربر و برنامه
یک برنامه ممکن است نشانه هایی را برای کاربر یا مستقیماً از طریق برنامه از طریق جریان اعتبار مشتری دریافت کند. این نشانه های فقط برنامه نشان می دهد که این تماس از یک برنامه کار می کند و کاربر از آن پشتیبانی نمی کند. این نشانه ها عمدتاً یکسان هستند:
- برای دیدن مجوزهایی که به موضوع نشانه اعطا شده است ، از نقش ها استفاده کنید.
- از OID یا SUB استفاده کنید تا تأیید کنید که مدیر سرویس فراخوانی مورد انتظار است.
اگر برنامه نیاز به تمایز بین برنامه های دسترسی فقط برنامه و دسترسی به نشانه ها برای کاربران دارد ، از ادعای اختیاری IDTYP استفاده کنید. برای تشخیص نشانه های دسترسی فقط برنامه ، ادعای IDTYP را به قسمت AccessToken اضافه کنید و برنامه Value را بررسی کنید. نشانه های شناسه و نشانه های دسترسی برای کاربران ، ادعای IDTYP را شامل نمی شوند.
ابطال توکن
به دلایل مختلف نشانه های تازه سازی را می توان در هر زمان باطل یا ابطال کرد. دلایل آن در دسته بندی های زمان و احیا قرار می گیرد.
زمان های توکن
هنگامی که یک سازمان از پیکربندی طول عمر استفاده می کند ، می توان طول عمر نشانه های تازه سازی را تغییر داد. انتظار می رود برخی از نشانه ها بدون استفاده بتوانند بروند. به عنوان مثال ، کاربر به مدت سه ماه برنامه را باز نمی کند و سپس توکن منقضی می شود. برنامه ها می توانند با سناریوهایی روبرو شوند که سرور ورود به دلیل سن آن یک نشانه تازه را رد می کند.
- MaxInactiveTime: اگر از نشانه تازه سازی در مدت زمان استفاده نشده توسط Maxinactivetime استفاده نشده باشد ، نشانه تازه سازی دیگر معتبر نیست.
- MaxSessionage: اگر MaxageSessionMultifactor یا MaxageSessionsingleFactor به چیزی غیر از پیش فرض آنها (تا زمان تجدید نظر) تنظیم شده باشد ، پس از زمان تعیین شده در حداکثر میزان ، مجدداً مورد نیاز است. مثال ها:
- مستاجر 5 روز حداکثر است و کاربر به مدت یک هفته به تعطیلات رفت و به همین ترتیب Azure AD در هفت روز درخواست توکن جدیدی از کاربر ندیده است. دفعه بعد که کاربر درخواست یک نشانه جدید را می دهد ، آنها می یابند که نشانه تازه کردن آنها ابطال شده است ، و آنها باید دوباره اعتبار خود را وارد کنند.
- یک برنامه حساس دارای یک روز حداکثر است. اگر کاربر روز دوشنبه وارد شود و روز سه شنبه (بعد از گذشت 25 ساعت) ، از آنها خواسته می شود که مجدداً تأیید شوند.
احیای نشانه
به دلیل تغییر در اعتبار ، یا به دلیل استفاده یا اقدامات اداری ، می توان نشانه های تازه را توسط سرور ابطال کرد. نشانه های تازه در کلاس های مشتری های محرمانه و مشتریان عمومی قرار دارند.
تغییر دادن کوکی مبتنی بر رمز عبور نشانه مبتنی بر رمز عبور کوکی مبتنی بر ردیف نشانه غیر قابل عبور نشانه مشتری محرمانه رمز عبور منقضی می شود زنده می ماند زنده می ماند زنده می ماند زنده می ماند زنده می ماند رمز عبور توسط کاربر تغییر کرده است لغو شده لغو شده زنده می ماند زنده می ماند زنده می ماند کاربر SSPR را انجام می دهد لغو شده لغو شده زنده می ماند زنده می ماند زنده می ماند سرپرست رمز عبور را بازنشانی می کند لغو شده لغو شده زنده می ماند زنده می ماند زنده می ماند کاربر با استفاده از PowerShell نشانه های تازه خود را باطل می کند لغو شده لغو شده لغو شده لغو شده لغو شده مدیر با استفاده از PowerShell تمام نشانه های تازه سازی را برای کاربر باطل می کند لغو شده لغو شده لغو شده لغو شده لغو شده ثبت نام در وب لغو شده زنده می ماند لغو شده زنده می ماند زنده می ماند مبتنی بر
ورود به سیستم مبتنی بر غیر پاس ، جایی است که کاربر برای دریافت آن رمز عبور را تایپ نکرد. نمونه هایی از ورود به سیستم مبتنی بر غیر پاس شامل موارد زیر است:
- با استفاده از صورت خود با ویندوز سلام
- کلید FIDO2
- پیامک
- صدا
- سنجاق
برای اطلاعات بیشتر در مورد نشانه های تازه سازی اولیه ، نشانه های تازه سازی را بررسی کنید.