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 बनाएँ
- Navigate to
Security->APIand 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"
-

नोट: audience
api://haloसभी Halo clients में साझा किया जाता है। Portal SSO और API Bearer authentication दोनों इस audience के विरुद्ध tokens को validate करते हैं। इससे एक ही authorization server दोनों उपयोग मामलों को सेवा दे सकता है।
Halo API access के लिए custom scope जोड़ें
- Navigate to the
Scopestab on the authorization server and add a new scope:- नाम:
halo.api - प्रदर्शन वाक्यांश: Halo API
- विवरण:
Access to Halo API Set as a default scopeको चुनें
- नाम:

नोट: OIDC scopes (उदाहरण के लिए
openid,profile,
Claims सेट अप करें
-
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
- नाम:
- Full name:

भूमिकाएँ परिभाषित करें
नोट: Halo दो अलग-अलग role claims का उपयोग करता है:
roles: UI access को नियंत्रित करने के लिए Portal द्वारा उपयोग किया जाता है (Portal-Access के माध्यम से)role: endpoint authorization के लिए API-Access service द्वारा उपयोग किया जाता हैयदि role claims कॉन्फ़िगर नहीं किए गए हैं, तो Portal डिफ़ॉल्ट रूप से read-only role का उपयोग करता है और API डिफ़ॉल्ट रूप से
Userrole का उपयोग करता है। प्रत्येक role क्या access कर सकता है, इसके विवरण के लिए Portal Roles to Action Mapping और API Roles to Action Mapping देखें।
- 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 के साथ टकराव पैदा कर सकते हैं।
-
Okta में groups बनाएँ।
Directory->Groupsपर जाएँ और बनाएँ:Halo_UserHalo_Admin
-
उपयोगकर्ताओं को उपयुक्त समूह में असाइन करें।
-
authorization server के
Claimsटैब पर जाएँ और एकrolesclaim बनाएँ जो group names को Halo role values में अनुवादित करता हो:- नाम:
roles - token type में शामिल करें:
Access Token - मान प्रकार:
Expression - Value:
isMemberOfGroupName("Halo_Admin") ? "Admin" : isMemberOfGroupName("Halo_User") ? "User" : "" - इसमें शामिल करें:
Any scope

- नाम:
नोट:
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 करें।
-
authorization server के
Claimsटैब पर जाएँ और एकroleclaim बनाएँ:- नाम:
role - token type में शामिल करें:
Access Token - मान प्रकार:
Expression - Value:
(app.clientId == "<your-api-client-id>") ? "Admin" : "User" - इसमें शामिल करें:
Any scope

- नाम:
नोट:
<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 कॉन्फ़िगर करना शामिल है।