پروتکل UMA

پروتکل User Managed Access 2.0 یا UMA یک پروتکل استاندارد کنترل دسترسی است که بر مبنای OAuth 2.0 ساخته شده است و اشتراک شخص به شخص را امکان پذیر می سازد.

UMA این توانایی را به مالکین منابع می دهد تا کنترل اینکه چه کسی می تواند از طریق یک سرور کنترل دسترسی مرکزی به منابع محافظت شده آن ها (دارایی های دیجیتال) بدون توجه به محل استقرار منابع دسترسی پیدا کند را به دست بگیرند. به عنوان مثال ، یک فرد مسن داده های مربوط به سلامتی (مانند نسخه های پزشکی و گزارش آزمایش خون) را با پزشکان ، شرکت بیمه خود و اعضای خانواده به اشتراک می گذارد.

اشتراک گذاری منابع می تواند به صورت انتخابی انجام شود که به افراد کمک می کند کنترل اشتراک منابع خود را به روشی مطمئن و ایمن بدست گیرند. ویژگی این پروتکل این است که دارندگان منابع نیازی به حضور آنلاین در زمان دسترسی ندارند زیرا اشتراک بین طرفین توسط سیاست های از پیش تعیین شده انجام می شود.

استفاده از استانداردهای UMA 2.0 شما را قادر می سازد به موارد زیر دست پیدا کنید:

  • زمینه (Context): لحظه مناسب تصمیم گیری برای به اشتراک گذاشتن است.
  • کنترل (Control): قدرت اشتراک گذاری صرفا آنچه که مالک منبع می خواهد.
  • انتخاب (Choice): توانایی تصمیم گیری مستقل.
  • احترام (Respect): توجه به تمایلات شخصی.

نسخه های پروتکل UMA

نسخه اول، 1.0 UMA در سال ۲۰۱۵ عرضه شد. Initiative Kantara رسما تایید و انتشار UMA نسخه ۲ را در فوریه ۲۰۱۸ اعلام کرد. UMA 2.0 به گونه ای طراحی شده است که با پروتکل معروف OAuth ارتباط نزدیکی داشته باشد. این امر باعث سهولت در اهداف پیاده سازی و بهبود جنبه های امنیتی آن می شود.

ویژگی های UMA 2.0

این پروتکل دو ویژگی به شرح زیر را داراست:
1. ارائه گرنت UMA 2.0 برای اخذ مجوز دسترسی OAuth 2.0: مشخص می کند که چگونه مشتری باید از تیکت مجوز برای درخواست توکن دسترسی OAuth 2.0 استفاده کند تا بدون توجه به زمانی که مالک منبع مجوز دسترسی را اعطا کرده است ، به یک منبع محافظت شده دسترسی پیدا کند.

2. کنترل دسترسی هم پیمان برای UMA 2.0: این امکان را می دهد که سرور کنترل دسترسی (Authorization Server) و سرور منابع (Resource Server) تا حد زیادی مستقل از هم و هم پیمان باشند. استفاده از این ویژگی در کنار گرنت UMA اختیاری است.

ساختار UMA 2.0

پروتکل UMA از 5 نقش تشکیل شده است:

1. مالک منابع: موجودیتی که اجازه دسترسی به یک منبع محافظت شده را می دهد.

2. درخواست دهنده: شخصی است که به وسیله یک کلاینت به دنبال دسترسی به یک منبع محافظت شده است.

3. کلاینت: برنامه ای است که از طرف درخواست کننده با اجازه مالک منبع، درخواست منابع محافظت شده را می دهد.

4. سرور منابع: سروری که میزبان منابع محافظت شده است و توانایی واکنش به درخواست های منابع محافظت شده را دارد.

5. سرور کنترل دسترسی: سروری که از منابع میزبانی شده توسط سرور منابع به نمایندگی از مالک منبع محافظت می کند.

نحوه مدیریت منابع در سرور منابع توسط مالک منابع و نحوه تعریف سیاست ها توسط مالک منابع در سرور کنترل دسترسی ، خارج از محدوده ویژگی UMA است.

کلاینتی که به نمایندگی از طرف درخواست دهنده عمل می‌کند قبل از دسترسی به یک منبع محافظت شده توسط UMA، باید یک توکن از سرور کنترل دسترسی دریافت کند.کلاینت با سرور کنترل دسترسی ارتباط برقرار می کند و ادعاهای لازم را که سیاست های مالک منبع را برآورده می کند ارائه می دهد. سپس کلاینت توکنی دریافت می کند که می تواند آن را به سرور منابع ارائه دهد تا دسترسی مورد نیاز را بدست آورد.

پروفایل UMA از دو جزء اصلی تشکیل شده است: Protection API و UMA Grant

پروتکل UMA چیست؟

Protection API

این API محافظت شده OAuth نقاط پایانی زیر را ارائه می دهد:

1. Resource Registration Endpoint

2. Permission Endpoint

3. Token Introspection Endpoint (اختیاری)

قبل از تعامل با Protection API از سرور کنترل دسترسی ، سرور منابع باید اعتبارنامه کلاینت OAuth را از سرور کنترل دسترسی کسب کرده باشد.

برای دسترسی به Resource Register Resource Endpoint ، Permission Endpoint و Token Introspection Endpoint ، لازم است درخواستی که سرور منابع به سرور کنترل دسترسی ارائه می دهد با یک توکن دسترسی ، یعنی Protection API Access Token (PAT) همراه باشد. PAT مجوز مالک منبع را برای استفاده از API حفاظت شده نشان می دهد. توکن PAT به سادگی یک توکن دسترسی OAuth با اسکوپ “uma_protection” است. این توکن به طور منحصر به فرد مالک منبع، سرور منابع مورد استفاده برای مدیریت منابع و سرور کنترل دسترسی مورد استفاده برای حفاظت از این منابع را نشان می‌دهد.

نقطه پایانی ثبت نام منابع (Resource Registration Endpoint)

نقطه پایانی ثبت نام منابع، ابزاری را برای سرور منابع فراهم می کند تا منابع را از طرف مالک منبع تحت حمایت سرور کنترل دسترسی قرار دهد و آنها را به مرور مدیریت کند. منابعی که در یک سرور منابع قرار دارند با ثبت موفقیت آمیز منبع در نقطه پایانی ثبت نام منابع ، تحت حمایت سرور کنترل دسترسی قرار می گیرند. حفاظت از منبع با ابطال ثبت نام در نقطه پایانی ثبت نام منابع پایان می یابد. مالک منبع می تواند در هر زمان و قبل از ثبت نام ، سیاست را برای منبع ثبت شده تنظیم کند.

این API از پنج گزینه ثبت نام پشتیبانی می کند که عبارتند از:

ایجاد توضیحات منبع: با استفاده از متد POST منبع جدیدی را در سرور مجوز ثبت می کند.

خواندن توضیحات منبع: شرح منبع که قبلاً ثبت شده را با استفاده از متد GET می خواند.

به روزرسانی توضیحات منبع: با جایگزینی کامل توضیحات منبع قبلی ، با استفاده از متد PUT ، شرح منبع ثبت شده را به روز می کند.

حذف توضیحات منبع: ثبت منبع قبلاً ثبت شده را با استفاده از متد DELETE از فهرست خارج می کند.

لیست کردن توضیحات منابع: با استفاده از متد GET تمام شناسه های منابع قبلاً ثبت شده برای این مالک منبع را لیست می کند.

نقطه پایانی مجوز (Permission Endpoint)

این نقطه پایانی ابزاری را برای درخواست مجوز (های) سرور منابع ، زمانی که درخواست منبع کلاینت توسط (RPT (Requesting Party Token همراه نباشد یا با RPT نامعتبر همراه باشد فراهم می کند.

یک مجوز نشان‌دهنده یک شناسه منبع و اسکوپ های مربوط به آن است. در یک درخواست واحد ، سرور منابع فقط می تواند مجوز دسترسی به منابع متعلق به یک مالک منبع را که توسط یک سرور کنترل دسترسی خاص محافظت می شود ، درخواست کند. به عنوان پاسخ ، سرور منابع یک تیکت مجوز دریافت می کند که نشان دهنده مجوزهایی است که سرور منابع درخواست کرده است.

نقطه پایانی وارسی توکن (Token Introspection Endpoint)

این نقطه پایانی ابزاری را برای سرور منابع فراهم می کند تا توکن RPT را که برای دسترسی به یک منبع محافظت شده UMA مورد نیاز است ، مورد بررسی قرار دهد.

گرنت UMA

گرنت UMA را می توان به عنوان یک اکستنشن از گرنت OAuth 2.0 تعریف کرد. این گرنت به روش های زیر قابلیت های OAuth را افزایش می دهد:
مالک منبع را قادر می سازد تا به جای اینکه پس از احراز هویت به طور همزمان اجازه دسترسی به توکن را صادر کند، سرور کنترل دسترسی را با سیاست های اعطای دسترسی به دلخواه پیکربندی نماید. سرور کنترل دسترسی و سرور منابع بدون نیاز به حضور هم زمان مالک منبع با کلاینت و طرف درخواست کننده ارتباط برقرار می کنند.
کنترل دسترسی شخص به شخص را امکان پذیر می کند. مالک منابع اجازه دسترسی به منابع محافظت شده خود را توسط موجودیت هایی که در نقش طرف درخواست کننده هستند به کلاینت ها می دهد.
وقتی کلاینت ، به نمایندگی از طرف درخواست کننده ، درخواست دسترسی اولیه را بدون دسترسی به توکن یا به وسیله توکن نامعتبر به سرور کنترل دسترسی می دهد ، کلاینت تیکت مجوز و آدرس سرور کنترل دسترسی را دریافت می کند. سپس مشتری می تواند با ارائه تیکت مجوز دریافت شده و سایر ادعاهای مورد نیاز ، از سرور کنترل دسترسی یک توکن درخواست دهنده (RPT) دریافت کند. RPT پس از ارزیابی موفقیت آمیز سیاست های تعیین شده، اسکوپ ها، ادعاها و سایر اطلاعات مربوطه صادر می شود.

یک RPT یک توکن دسترسی OAuth مرتبط با گرنت UMA است. RPT منحصر به یک طرف درخواست کننده، کلاینت، سرورکنترل دسترسی، سرور منابع و مالک منبع است. این توکن نشان دهنده تعدادی از مجوزهای اعطا شده است.

برای صدور توکن RPT ، جمع آوری ادعاها لازم است. در مشخصات گرنت UMA ذکر شده است که این امر می تواند توسط کلاینتی که مستقیما ادعاهای مورد نظر خود را ارسال می کند یا با جمع آوری ادعاها به صورت تعاملی به کمک کاربر نهایی به دست آید.

نحوه کار پروتکل UMA در سامانه مدیریت هویت و دسترسی آتین

سامانه مدیریت هویت و دسترسی آتین به عنوان سرور کنترل دسترسی از نقاط پایانی API Protection و گرنت UMA در پروتکل UMA پشتیبانی می‌کند.

  1. سرور منابع، منابع و اسکوپ های موجود آن ها را تحت حفاظت سرور کنترل دسترسی قرار می دهد.پس از ثبت نام منبع، مالک منبع می تواند شرایط سیاست را در سرور کنترل دسترسی تنظیم کند.
  2. کلاینت که به نمایندگی از طرف درخواست دهنده اقدام می کند، درخواست دسترسی به منبع محافظت شده را ارائه می دهد. (با توکن دسترسی نامعتبر یا بدون RPT)
  3. سرور منابع، سطوح دسترسی (منابع و اسکوپ هایی که به آن منبع مربوط می شوند) را درخواست می کند.
  4. سرور کنترل دسترسی تیکت سطح دسترسی را باز می گرداند.
  5. سرور منابع URI سرور کنترل دسترسی و تیکت سطح دسترسی را باز می گرداند.
  6. کلاینت با ارائه تیکت سطح دسترسی و هرگونه ادعای لازم، توکن دسترسی را درخواست می کند.
  7. سرور کنترل دسترسی یک RPT صادر می کند.
  8. درخواست کلاینت برای منبع محافظت شده با RPT.
  9. سرور منابع RPT را در سرور کنترل دسترسی وارسی می کند.
  10. سرور کنترل دسترسی وضعیت وارسی توکن را برمی گرداند.
  11. سرور منابع به منبع محافظت شده دسترسی پیدا می کند.
در مشخصات گرنت UMA به استفاده از توکنی به نام PCT (Persisted Claims Token) برای نشان دادن مجموعه ای از ادعاهای جمع آوری شده طی پروسه کنترل دسترسی اشاره شده است تا توسط کلاینت در تلاش های بعدی درخواست RPT از سرور کنترل دسترسی مورد استفاده قرار گیرد. این قابلیت همچنین یک نقطه پایانی اختیاری برای تعامل ادعاها تعریف می کند تا به کاربر نهایی اجازه دهد با سرور کنترل دسترسی برای ارائه ادعاهای مورد نیاز تعامل کند.

نمونه ای از فرایند ذکر شده :

فرد سالخورده ای باید اطلاعات پزشکی و سلامت خود را که به صورت دیجیتالی است با افراد مختلف از جمله فرزندش، پزشکان و شرکت بیمه به اشتراک بگذارد. او نیاز دارد که این اطلاعات را به صورت جزء به جزء و دقیق با افراد به اشتراک بگذارد. برای مثال می خواهد نسخه پزشکی خود را با فرزندش و قبض هزینه های بیمارستان را با شرکت بیمه به اشتراک بگذارد. همچنین او متوجه شده است که این که هر بار بخواهد اطلاعات را با افراد مختلف به صورت آنلاین به اشتراک بگذارد مقدور نیست.
راه حلی وجود دارد که به این فرد این امکان را می دهد که منابع خود را به طور فعال کنترل کرده و آن ها را به صورت انتخابی از یک مرکز واحد و بدون توجه به محل قرارگیری منابع به اشتراک بگذارد. این راه حل UMA است. به وسیله پروتکل UMA شخص به سادگی می تواند تعریف کند که چه کسی با چه مجوزی می تواند به منابع او دسترسی داشته باشد. حال فرد مورد نظر می‌تواند داده‌های پزشکی خود را به شیوه‌ای ایمن به اشتراک بگذارد و لازم نیست هر بار که دسترسی به داده‌های دیجیتالی او برای هر یک از طرفین مورد نیاز است، حضور آنلاین داشته باشد.

نتیجه گیری پایانی: UMA یک چارچوب کنترل دسترسی رسمی برای به اشتراک گذاری منابع است. با استفاده از UMA ، مالک منبع می تواند به راحتی منابع خود را با سایر طرف های درخواست کننده به اشتراک بگذارد.

بدون دیدگاه

© تمامی حقوق برای شرکت دانش بنیان آتین محفوظ است.