मुख्य सामग्री पर जाएँ

Okta Authorization Server

Halo द्वारा आवश्यक claims, roles, और access policies के साथ एक custom Okta authorization server सेट अप करें। यह Halo Portal SSO और Halo API Bearer Authentication दोनों के लिए एक पूर्वापेक्षा है।

पूर्वापेक्षाएँ

  • admin access के साथ एक Okta organization
  • आपके Halo deployment से Okta तक network access

authorization server बनाएँ

  1. Navigate to Security -> API and create a new Authorization server.
    • एक उपयुक्त नाम दें। उदाहरण के लिए Glasswall Halo

    • एक common audience value दर्ज करें जो सभी Halo clients (Portal और API) में साझा की जाएगी। उदाहरण के लिए api://halo

    • एक उपयुक्त विवरण दें। उदाहरण के लिए Glasswall Halo Authorization server

    • सेव हो जाने के बाद, Issuer Metadata URI को नोट कर लें। URI के अंत से /.well-known/oauth-authorization-server हटा दें। उदाहरण के लिए:

      export ORIGINAL_ISSUER_URI=https://your-org.okta.com/oauth2/aus1234567890abcdef/.well-known/oauth-authorization-server
      export OKTA_ISSUER_URI=https://your-org.okta.com/oauth2/aus1234567890abcdef
      export VALID_AUDIENCE="api://halo"

Screenshot: Create new authorization server Screenshot: Authorization server details with issuer URI

नोट: audience api://halo सभी Halo clients में साझा किया जाता है। Portal SSO और API Bearer authentication दोनों इस audience के विरुद्ध tokens को validate करते हैं। इससे एक ही authorization server दोनों उपयोग मामलों को सेवा दे सकता है।

Halo API access के लिए custom scope जोड़ें

  1. Navigate to the Scopes tab on the authorization server and add a new scope:
    • नाम: halo.api
    • प्रदर्शन वाक्यांश: Halo API
    • विवरण: Access to Halo API
    • Set as a default scope को चुनें

Screenshot: Custom scope configuration

नोट: OIDC scopes (उदाहरण के लिए openid, profile, email) केवल user-context के लिए होते हैं और इन्हें Client Credentials flow के साथ उपयोग नहीं किया जा सकता। machine-to-machine API access के लिए एक custom scope आवश्यक है।

Claims सेट अप करें

  1. Halo services द्वारा आवश्यक claims को configure करें। authorization server पर Claims टैब पर जाएँ।

    • Full name:
      • नाम: name
      • token type में शामिल करें: Access Token
      • मान प्रकार: Expression
      • मान: user.firstName + " " + user.lastName
      • इसमें शामिल करें: Any scope
    • Family name:
      • नाम: family_name
      • token type में शामिल करें: Access Token
      • मान प्रकार: Expression
      • मान: user.lastName
      • इसमें शामिल करें: Any scope
    • Given name:
      • नाम: given_name
      • token type में शामिल करें: Access Token
      • मान प्रकार: Expression
      • मान: user.firstName
      • इसमें शामिल करें: Any scope
    • Email ID:
      • नाम: unique_name
      • token type में शामिल करें: Access Token
      • मान प्रकार: Expression
      • मान: user.email
      • इसमें शामिल करें: Any scope

Screenshot: Claims configuration

भूमिकाएँ परिभाषित करें

नोट: Halo दो अलग-अलग role claims का उपयोग करता है:

  • roles: UI access को नियंत्रित करने के लिए Portal द्वारा उपयोग किया जाता है (Portal-Access के माध्यम से)
  • role: endpoint authorization के लिए API-Access service द्वारा उपयोग किया जाता है

यदि role claims कॉन्फ़िगर नहीं किए गए हैं, तो Portal डिफ़ॉल्ट रूप से read-only role का उपयोग करता है और API डिफ़ॉल्ट रूप से User role का उपयोग करता है। प्रत्येक role क्या access कर सकता है, इसके विवरण के लिए Portal Roles to Action Mapping और API Roles to Action Mapping देखें।

  1. Halo दो role values को पहचानता है: User और Admin (case-insensitive)। Okta में Authorization servers में roles परिभाषित करने का कोई native तरीका नहीं है। Access token में user/client roles पास करने के लिए role claims जोड़े जाने चाहिए।

Portal SSO roles (roles claim)

इस claim का उपयोग Portal यह निर्धारित करने के लिए करता है कि उपयोगकर्ता के लिए कौन-से pages और features उपलब्ध हैं। हम generic User या Admin groups के बजाय Halo-specific group names का उपयोग करने की सिफारिश करते हैं, क्योंकि वे आपके Okta organization में अन्य applications के साथ टकराव पैदा कर सकते हैं।

  1. Okta में groups बनाएँ। Directory -> Groups पर जाएँ और बनाएँ:

    • Halo_User
    • Halo_Admin
  2. उपयोगकर्ताओं को उपयुक्त समूह में असाइन करें।

  3. authorization server के Claims टैब पर जाएँ और एक roles claim बनाएँ जो group names को Halo role values में अनुवादित करता हो:

    • नाम: roles
    • token type में शामिल करें: Access Token
    • मान प्रकार: Expression
    • Value:
      isMemberOfGroupName("Halo_Admin") ? "Admin" : isMemberOfGroupName("Halo_User") ? "User" : ""
    • इसमें शामिल करें: Any scope

    Screenshot: Roles claim using groups with expression

नोट: isMemberOfGroupName() फ़ंक्शन केवल user-context flows (जैसे, Authorization Code) में काम करता है। यह Client Credentials (machine-to-machine) flows पर लागू नहीं होता।

API भूमिकाएँ (role claim)

इस claim का उपयोग API-Access service द्वारा operations को authorize करने के लिए किया जाता है। चूँकि API clients Client Credentials flow (कोई user context नहीं) का उपयोग करते हैं, group membership expressions लागू नहीं होते। इसके बजाय, client_id को एक role value से map करें।

  1. authorization server के Claims टैब पर जाएँ और एक role claim बनाएँ:

    • नाम: role
    • token type में शामिल करें: Access Token
    • मान प्रकार: Expression
    • Value:
      (app.clientId == "<your-api-client-id>") ? "Admin" : "User"
    • इसमें शामिल करें: Any scope

    Screenshot: Role claim using client ID expression

नोट: <your-api-client-id> को अपने API Services application के client_id से बदलें। कई API clients के लिए अतिरिक्त conditions जोड़ें, उदाहरण के लिए:

(app.clientId == "<client-1>") ? "Admin" : (app.clientId == "<client-2>") ? "Admin" : "User"

अगले चरण

authorization server के configured होने के बाद, निम्न में से एक या दोनों को set up करने के लिए आगे बढ़ें:

  • Halo Portal SSO - Halo Portal के लिए identity provider के रूप में Okta कॉन्फ़िगर करें
  • Halo API Bearer Authentication - Halo API के लिए Bearer token authentication कॉन्फ़िगर करें

प्रत्येक गाइड में उसके संबंधित client के लिए इस authorization server पर एक access policy कॉन्फ़िगर करना शामिल है।