On-Premise Kurulumda Tek Oturum Açma (SSO)
Bu sayfa, MonoChat’in on-premise kurulumunu işleten yöneticiler içindir. Çalışanlarınızın şirketinizin kimlik sağlayıcısıyla (IdP) OpenID Connect (OIDC) üzerinden nasıl giriş yapacağını anlatır; örneğin Microsoft Entra ID, Okta, Keycloak, AD FS veya Google Workspace.
Tek oturum açma, tenant bazında değil, sunucu ayarlarında tüm kurulum için yapılır. Bir MonoChat hesabı birden fazla tenant’a ait olabilir ve kişiler bir tenant seçmeden önce giriş yapar. Giriş yapmak bir hesap verir, erişim vermez: kişi bir tenant’ı ancak o tenant onu davet edip bir rol verdikten sonra görür.
Giriş nasıl çalışır
Biri giriş sayfasındaki SSO düğmesine tıkladığında MonoChat, IdP’nizin giriş sayfasını bir açılır pencerede açar. Kişi orada giriş yaptıktan sonra IdP, tarayıcıyı tek kullanımlık bir kodla MonoChat’e geri gönderir. MonoChat sunucusu kodu bir ID token ile değiştirir ve kişiyi içeri almadan önce token’ı denetler:
- IdP’nin uç noktaları ve imza anahtarları her girişte keşif belgesinden,
<issuer>/.well-known/openid-configuration, okunur. - Giriş, PKCE (S256), bir
stateve birnonceile yetkilendirme kodu akışını kullanır. Bir giriş isteği 10 dakika geçerlidir ve bir kez kullanılabilir. - ID token, IdP’nin anahtarlarından biriyle imzalanmış olmalı ve sizin issuer değerinizi (
iss), client ID’nizi (aud), isteğinnoncedeğerini ve süresi geçmemiş bir bitiş zamanını (exp) taşımalıdır. - ID token kişinin e-posta adresini (
email) içermelidir. IdP adresin doğrulanmadığını söylerse (email_verified: false) giriş reddedilir.
1. MonoChat’i kimlik sağlayıcınıza kaydedin
IdP’nizde MonoChat için şu değerlerle bir uygulama (client) oluşturun:
| IdP’deki ayar | Değer |
|---|---|
| Uygulama türü | Client secret’lı web uygulaması (gizli client) |
| Giriş yönlendirme URI’si | https://<your MonoChat domain>/api/oauth/oidc/redirect |
| Grant türü | Yetkilendirme kodu (authorization code) |
| Kapsamlar (scopes) | openid email profile |
| Token uç noktasında client kimlik doğrulaması | HTTP Basic kimlik doğrulamasıyla gönderilen client secret (client_secret_basic) |
ID token’ın email claim’ini içerdiğinden emin olun. Client ID’yi, client secret’ı ve issuer’ı not edin. Issuer, IdP’nin keşif belgesindeki issuer değeridir. Tipik biçimleri:
| Kimlik sağlayıcı | Issuer |
|---|---|
| Microsoft Entra ID | https://login.microsoftonline.com/<tenant id>/v2.0 |
| Okta | https://<your Okta domain>/oauth2/default veya https://<your Okta domain> |
| Keycloak | https://<your Keycloak host>/realms/<realm> |
| AD FS (2016 veya üstü) | https://<your AD FS host>/adfs |
| Google Workspace | https://accounts.google.com |
<issuer>/.well-known/openid-configuration adresini tarayıcıda açın ve issuer değerini, sonunda bir / varsa onunla birlikte, aynen kopyalayın. İkisi farklı olduğunda MonoChat kimseyi içeri almaz.
2. Ayarları ekleyin
oidc bloklarını sunucu ayarlarına ekleyin ve MonoChat’i yeniden başlatın. Herkese açık blok public.oauth altına, gizli blok oauth altına girer:
{
"oauth": {
"oidc": {
"clientSecret": "<client secret>",
"autoCreateAccounts": true,
"allowedEmailDomains": ["company.com"]
}
},
"public": {
"oauth": {
"oidc": {
"issuer": "https://login.microsoftonline.com/<tenant id>/v2.0",
"clientId": "<client id>",
"redirectPath": "/api/oauth/oidc/redirect",
"scope": "openid email profile",
"buttonLabel": "Sign in with Company SSO"
}
}
}
}
| Ayar | Ne yapar |
|---|---|
public.oauth.oidc.issuer | 1. adımdaki issuer |
public.oauth.oidc.clientId | 1. adımdaki client ID |
public.oauth.oidc.redirectPath | 1. adımdaki yönlendirme URI’sinin yolu |
public.oauth.oidc.scope | MonoChat’in istediği kapsamlar |
public.oauth.oidc.buttonLabel | Giriş düğmesinin metni. Boş bırakılırsa kişinin dilinde "SSO ile Giriş Yap" gösterilir |
oauth.oidc.clientSecret | Client secret. Sunucuda kalır |
oauth.oidc.autoCreateAccounts | true, kayıt yalnızca davetle olsa bile (public.disableSignup) kişinin ilk SSO girişinde MonoChat hesabını oluşturur |
oauth.oidc.allowedEmailDomains | Yalnızca e-posta adresi bu alan adlarından birinde olan kişiler SSO ile giriş yapabilir. Tüm alan adlarına izin vermek için eklemeyin |
Ardından SSO düğmesi giriş sayfasında görünür.
Kimler giriş yapabilir
- Yeni kişiler.
autoCreateAccounts: trueile kişinin ilk SSO girişi hesabını oluşturur. Bu ayar yoksa hesap yalnızcapublic.disableSignupkapalıysa ya da kişi bir davetten giriş yaparsa oluşturulur. - Aynı e-posta adresiyle zaten hesabı olan kişiler.
oauth.autoMerge: trueile ilk SSO girişi SSO’yu mevcut hesaba bağlar, ancak yalnızca ID token adresin doğrulandığını söylüyorsa (email_verified: true). Bu koşul sağlanmazsa ya daautoMergeyoksa MonoChat kişiden bir kez parolasıyla giriş yapmasını ister ve SSO’yu hesaba o zaman bağlar; bir tenant’ın davetini kabul etmek de SSO’yu bağlar. Microsoft Entra ID ve AD FSemail_verifiedgöndermez; bu yüzden bu sağlayıcılarda, herkes SSO’yu bağlayana kadar parolalı girişe izin vermeye devam edin ya da kişileri yeniden davet edin. - İzin verilen alan adları.
allowedEmailDomainsile başka bir alan adındaki adres reddedilir. Google Workspace’te (issuerhttps://accounts.google.com) MonoChat e-posta adresi yerine hesabın Workspace alan adı olanhdclaim’ini denetler, çünkü kişisel bir Google hesabı herhangi bir alan adındaki adresi kullanabilir.
SSO’yu tek giriş yöntemi yapın
public.auth.methodsdeğerini["oidc"]yapın. Giriş sayfası artık yalnızca SSO düğmesini gösterir ve sunucu parolalı ve sosyal girişleri reddeder.- Root super kullanıcılar (root tenant’ta root super rolüne sahip kullanıcılar)
/auth/signin?fallback=1adresinde parolalarıyla giriş yapmaya devam edebilir; böylece IdP çalışmadığında kurulum kilitli kalmaz. - Yeni SSO hesaplarının kendi tenant’larını açmasını engellemek için
public.disableTenantCreationdeğerinitrueyapın. Bundan sonra yalnızca bir tenant’ta uygun role sahip kişiler onun altında tenant oluşturabilir.
Ağ
/api/oauth/oidc/authorizeveredirectPathyolunuzu giriş yapan kişiler için erişilebilir tutun. İkisi de onların tarayıcısında açılır.- MonoChat sunucusu IdP’nizin keşif belgesine, token uç noktasına ve anahtar kümesine (
jwks_uri) HTTPS üzerinden ulaşabilmelidir.
Sınırlar
- MonoChat mobil uygulaması henüz SSO sunmuyor. SSO’yu tek giriş yöntemi yaparsanız temsilciler mobil uygulamaya giriş yapamaz.
- MonoChat’ten çıkış yapmak kişiyi IdP’den çıkarmaz, IdP’den çıkış yapmak da henüz MonoChat’ten çıkarmaz.
Kurulumunuzu kontrol edin
- Giriş sayfasını açın ve SSO düğmesine tıklayın. IdP’nizde giriş yapın; açılır pencere kapanır ve MonoChat’e giriş yapmış olursunuz.
- Henüz MonoChat hesabı olmayan bir kişiyle giriş yapın ve hesabın oluşturulduğunu (ya da
autoCreateAccountsaçık değilse reddedildiğini) doğrulayın. allowedEmailDomainsayarladıysanız başka bir alan adındaki bir kişiyle deneyin ve girişin reddedildiğini doğrulayın.public.auth.methodsayarladıysanız parolalı girişin reddedildiğini ve bir root super kullanıcının/auth/signin?fallback=1adresinde hâlâ giriş yapabildiğini doğrulayın.