Langkau ke kandungan
KeuralDocs
Pembangun

Spesifikasi integrasi SSO·SCIM

Nilai dan gelagat yang diperlukan untuk integrasi OIDC·SAML 2.0·SCIM 2.0.

Susunan tetapan mengikut skrin, lihat SSO dan SCIM.

{API} dalam jadual ialah alamat API Keural bagi persekitaran yang digunakan (contoh: https://api.keural.ai). Gunakan alamat yang dipaparkan dalam skrin Pengurusan organisasi → Tetapan SSO.

Ringkasan nilai pendaftaran

ItemNilai
URI ubah hala OIDC{API}/api/sso/callback
Permulaan log masuk OIDC·SAML{API}/api/sso/{orgId}/login
SAML SP EntityID{API}/api/sso/saml/metadata
SAML ACS URL{API}/api/sso/saml/callback
SCIM Base URL{API}/scim/v2

Log masuk sentiasa dimulakan dari Keural (SP-initiated). Apabila e-mel dengan domain yang didaftarkan dimasukkan pada skrin log masuk, anda dibawa ke alamat permulaan log masuk. Jika berjaya, anda dibawa ke skrin utama Keural. Jika gagal, anda dibawa ke /login?error=sso.

OIDC

ItemGelagat
AliranAuthorization Code
Permintaan authorizeresponse_type=code, client_id, redirect_uri, scope=openid email profile, state, nonce
state · nonceSekali guna dan sah selama 10 minit. Jika tetingkap log masuk dibiarkan terbuka melebihi 10 minit, log masuk perlu bermula semula dari awal.
Pertukaran tokenPOST ke token endpoint, application/x-www-form-urlencoded, pengesahan klien client_secret_post (client_id dan client_secret dalam badan)
Tandatangan ID tokenHanya menerima RS256. Kunci dicari dalam jwks_uri mengikut kid.
Pengesahan ID tokenTandatangan, exp, aud mengandungi client_id, nonce sepadan, iss sepadan dengan Issuer URL (/ di hujung diabaikan)
E-melTuntutan email dalam ID token. Jika tiada, userinfo endpoint dipanggil dengan Authorization: Bearer <access_token> untuk membaca email.
NamaTuntutan name dalam ID token
EndpointDicari dalam /.well-known/openid-configuration pada Issuer URL. IdP yang tidak menyediakannya boleh diisi terus dengan alamat authorization · token · JWKS · userinfo melalui Papar tetapan lanjutan.
Had masa15 saat bagi setiap panggilan IdP

Aplikasi IdP mesti membenarkan client_secret_post. Jika tetapan hanya membenarkan client_secret_basic atau private_key_jwt, pertukaran token akan gagal.

SAML 2.0

ItemGelagat
PermintaanAuthnRequest dihantar melalui pengikatan HTTP-Redirect. Permintaan tidak ditandatangani.
Kandungan permintaanDestination=IdP SSO URL, AssertionConsumerServiceURL=ACS URL, ProtocolBinding=HTTP-POST, Issuer=SP EntityID, NameIDPolicy Format=…:nameid-format:unspecified, AllowCreate=true
ResponsPengikatan HTTP-POST, dengan SAMLResponse dan RelayState. RelayState mesti dikembalikan sama seperti nilai yang dihantar Keural.
TandatanganResponse atau Assertion mesti mempunyai tandatangan yang sah. Kunci pengesahan hanya menggunakan sijil yang didaftarkan dalam skrin.
AssertionRespons mesti mengandungi tepat satu assertion. EncryptedAssertion tidak diterima.
StatusStatusCode ialah urn:oasis:names:tc:SAML:2.0:status:Success
IssuerJika IdP EntityID diisi, ia mesti sepadan dengan Issuer dalam assertion
SyaratNotBefore dan NotOnOrAfter (toleransi 300 saat), Audience=SP EntityID
SubjectConfirmationDataRecipient=ACS URL, NotOnOrAfter (toleransi 300 saat), InResponseTo=ID permintaan yang Keural hantar
E-melAtribut Name atau FriendlyName ialah salah satu daripada berikut (tidak peka huruf besar/kecil): email, mail, emailAddress, E-Mail-Addresses, http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress. Jika tiada, NameID yang mengandungi @ digunakan.
NamadisplayName, name, cn, http://schemas.microsoft.com/identity/claims/displayname
SijilX.509 satu buah. PEM atau Base64(DER). Untuk menukar sijil, masukkan sijil baharu dan simpan.
MetadataDaripada memuat naik XML metadata IdP, masukkan tiga nilai: IdP EntityID · IdP SSO URL · sijil.

Padanan pengguna

ItemGelagat
Syarat dihantar ke SSOBahagian selepas @ dalam e-mel sama tepat dengan satu item dalam senarai domain e-mel (tidak peka huruf besar/kecil). Subdomain didaftarkan secara berasingan.
Mencari akaunAkaun Keural dicari menggunakan e-mel (huruf kecil) yang diberikan IdP.
Apabila akaun tiadaJika Cipta pengguna automatik pada log masuk pertama (JIT) dihidupkan, akaun dicipta. Jika dimatikan, log masuk ditolak.
Sertai organisasiJika bukan ahli organisasi, pengguna menyertai sebagai Ahli. Akaun yang tempat duduknya penuh atau yang tergolong dalam organisasi lain tidak menyertai dan hanya dapat log masuk.
Syarat simpan domain e-melDomain yang disahkan dengan DNS TXT, tidak termasuk domain e-mel awam

Pengesahan domain

ItemNilai
Jenis rekodTXT
HosDomain yang didaftarkan sama seperti yang dimasukkan (contoh: acme.com). Jangan gunakan subdomain awalan.
Nilaikeural-verify=<UUID> (nilai tepat seperti yang dipaparkan)
Masa semakanDisemak sekali apabila Sahkan pengesahan ditekan.

SCIM 2.0

ItemNilai
Base URL{API}/scim/v2
PengesahanAuthorization: Bearer <token SCIM>. Token bermula dengan scim_ dan hanya dipaparkan sekali semasa dikeluarkan.
Content-TypePermintaan application/scim+json atau application/json, respons application/scim+json
Kod statusDikembalikan sebagai kod status HTTP sebenar. Badan ralat ialah format SCIM Error (schemas, status, detail, scimType).

Endpoint

KaedahLaluanGelagat
GET/UsersSenarai. filter=userName eq "…", startIndex (lalai 1), count (lalai 100, maksimum 200)
GET/Users/{id}Lihat seorang pengguna
POST/UsersCipta (201). Jika e-mel yang sama wujud, 409.
PATCH/Users/{id}Ubah active, displayName, name.formatted, name.givenName
PUT/Users/{id}Gunakan displayName·name·active. Jika active tidak disertakan, ia dianggap aktif.
DELETE/Users/{id}Gantung akaun (204). Data tidak dipadam.
GET/Groups, /Groups/{id}Lihat dua kumpulan tetap. filter=displayName eq "…"
PATCH/Groups/{id}Tambah, buang, atau gantikan ahli
GET/ServiceProviderConfig, /ResourceTypes, /SchemasLihat ciri yang disokong

Atribut pengguna

AtributKegunaan
userNameE-mel. Jika tiada, emails[0].value digunakan.
displayName · name.formatted · name.givenName+name.familyNameNama paparan
activefalse menggantung (log masuk disekat), true memulihkan
idID pengguna Keural. Dimuatkan dalam respons.

externalId tidak disimpan. Untuk mencari pengguna dari IdP, gunakan penapis userName.

Kumpulan

iddisplayNameApabila ahli ditambahApabila ahli dibuang
keural-adminsKeural AdminsPentadbirAhli
keural-membersKeural MembersAhliTiada perubahan

Peranan pemilik organisasi tidak berubah melalui SCIM. Mencipta atau memadam kumpulan (POST·DELETE /Groups) memulangkan 501. value bagi ahli kumpulan ialah ID pengguna Keural (id daripada /Users).

Skop sokongan

CiriDisokong
PATCHYa
PenapisuserName eq, displayName eq
Bulk · isihan · ETag · tukar kata laluanTidak

Ralat

StatusscimTypePunca
400invalidValueuserName dan emails kedua-duanya tiada
401—Token tiada atau salah, pemperuntukan SCIM dimatikan
404—Bukan pengguna atau kumpulan dalam organisasi ini
409uniquenessAkaun dengan e-mel yang sama sudah wujud, tempat duduk melebihi had
501—Mencipta atau memadam kumpulan

Pada halaman ini