پرش به مطلب اصلی
احراز هویت با SSO در راکت‌چت

احراز هویت با SSO در راکت‌چت

بازارچه ابریخواندن 5 دقیقه

با اتصال RocketChat به Keycloak از طریق Custom OAuth ورود به RocketChat با همان حساب Keycloak (SSO) انجام می‌شود.

پیش‌نیازها

  • یک سرویس فعال RocketChat و دسترسی ادمین
  • یک سرویس فعال Keycloak

گام اول: ساخت Client در Keycloak

  1. از مسیر Clients > Create client، یک Client جدید ساخته می‌شود؛ برای مثال با Client ID rocketchat.
  2. Client authentication روی حالت فعال (Confidential) قرار می‌گیرد و Standard flow فعال باقی می‌ماند.
  3. در Valid redirect URIs، آدرس زیر اضافه می‌شود:
https://your-rocketchat-domain.xyz/_oauth/keycloak
  1. پس از Save، از تب Credentials، مقدار Client secret کپی می‌شود.

گام دوم: ساخت نقش‌ها و تخصیص به کاربران

نقش‌های RocketChat (مثلاً admin) در Keycloak به‌صورت Client Roles روی همین Client ساخته می‌شوند؛ مشابه روشی که برای Grafana استفاده شد:

  1. از تب Roles همین Client، با دکمه Create role، نقشی با همان نام دقیق نقش موردنظر در RocketChat ساخته می‌شود؛ برای مثال admin.
  1. برای تخصیص نقش به هرکاربر، از مسیر Users، کاربر موردنظر انتخاب و از تب Role mapping، روی Assign role کلیک می‌شود؛ در پنجره بازشده، با فعال کردن Filter by clients، نقش‌های همین Client قابل انتخاب‌اند.

  2. از تب Client scopes همین Client، روی Scope اختصاصی کلیک می‌شود؛ از تب Mappers، روی Configure a new mapper و سپس User Client Role کلیک می‌شود.

  3. تنظیمات این Mapper:

    فیلدمقدار
    Nameیک نام دلخواه، مثلاً rocketchat-roles
    Client IDهمین Client (rocketchat)
    Token Claim Nameیک نام دلخواه، مثلاً roles
    Multivaluedروشن
    Add to ID token / Add to access token / Add to userinfoروشن

گام سوم: افزودن Custom OAuth در RocketChat

  1. از مسیر Administration > Settings > OAuth، روی Add custom OAuth کلیک شده و یک نام (مثلاً keycloak) وارد می‌شود.
  2. Enable فعال می‌شود و مقادیر زیر بر اساس آدرس Keycloak و realm مربوطه تکمیل می‌شوند:
فیلدمقدار
URLhttps://your-keycloak-domain/realms/<realm-name>/protocol
Token Path/openid-connect/token
Token Sent ViaHeader
Identity Path/openid-connect/userinfo
Authorize Path/openid-connect/auth
Scopeopenid
Idهمان Client ID ساخته‌شده در Keycloak (مثلاً rocketchat)
SecretClient Secret کپی‌شده از Keycloak

توضیح کامل هرکدام از این فیلدها در مستند رسمی «Custom OAuth Setup» آمده است.

  1. برای همگام‌سازی نقش‌ها، طبق مستند رسمی RocketChat، سه فیلد زیر هم در همین صفحه تکمیل می‌شوند:
فیلدمقدار
Roles/Groups field nameهمان مقدار Token Claim Name از گام قبل، مثلاً roles
Merge Roles from SSOروشن
Roles to Syncنام نقش‌هایی که باید همگام شوند، مثلاً admin
  1. برای نگاشت اطلاعات پروفایل کاربر، فیلدهای زیر تکمیل می‌شوند:

    فیلدمقدار
    Key FieldUsername
    Username fieldpreferred_username
    Email fieldemail
    Name fieldname
    Avatar fieldخالی می‌ماند
  1. سایر گزینه‌های همین صفحه:

    فیلدمقدار
    Merge usersروشن
    Merge users from distinct servicesخاموش
    Map Roles/Groups to channelsخاموش
    Show Button on Login Pageروشن
  1. با Save changes تنظیمات ذخیره و با Refresh OAuth Services provider فعال می‌شود.

گام چهارم: ورود با SSO

پس از این مرحله، دکمه ورود با Keycloak در صفحه لاگین RocketChat نمایش داده می‌شود.

این راهنمایی کاربردی بود؟

با ثبت بازخوردتان در بهبود کیفیت مستندات مشارکت داشته باشید.