۱۳۹۹ اسفند ۵, سه‌شنبه

دسترسی به role های کاربران در Spring/Jhipster از Keycloak

 برای ایجاد محدودیت روی کنترلر ها، یا فیلتر کردن نتایج بسته به نقش کاربر، با محدودیت هایی در JHipster 5.x روبرو شدیم. توکنی که از Keycloak میگرفتیم شامل نقشهای کاربر بود ولی در مسیر اشتباهی! Keycloak نقش ها رو در مسیر realm_access.roles داخل توکن قرار میداد در حالی که Spring Security، در روت playload توکن دنبال roles میگرده.

من این مشکل رو سمت از سمت Keycloak حل کردم و roles رو به روت playload اضافه کردم، که در دنباله این مطلب به این موضوع میپردازم.

وارد realm مورد نظرتون بشید و از منوی دست چپ،‌ Client Scopes را انتخاب کنید:

Keycloak Master Realm 

 گزینه roles را انتخاب کنید:

Keycloak Client Scopes

نکته: اگر این گزینه را ندارید، از طریق دکمه create آنرا ایجاد کنید و اطلاعات زیر را برایش وارد کنید (این اطلاعات اختیاری است و میتوانید با هر نام دلخواهی ایجاد کنید)

Keycloak Roles Client Scope

به تب Mappers برید، و دکمه create را بزنید:

Keycloak Mappers of Roles Client Scope

اطلاعات زیر را در این فرم وارد کنید و آنرا ذخیره کنید:

Keycloak new Mapper

نکته: اگر Client Scope را دستی ایجاد کردید،‌ باید این مرحله را نیز انجام دهید، و آن اضافه کردن scope به client مورد نظرتان است. از منوی دست چپ گزینه Clients را انتخاب کنید، کلاینت مد نظرتان را انتخاب کنید، به تب Client Scopes رفته و roles (یا هر اسمی که به آن تخصیص دادید) به Assigned Default Client Scopes منتقل کنید.

Keycloak Assign Scope

در این مرحله کار ما تمام شده است و باید توکن را بررسی کنید و اطمینان حاصل کنید که roles به آن اضافه شده است.

Token Decoded

هیچ نظری موجود نیست:

ارسال یک نظر