Skip to content
Smarter by Design.Simpler for Business

OAuth2 ​

OAuth2 Nedir? ​

OAuth2, kullanıcının kimliğini harici bir kimlik sağlayıcısında (Google, Microsoft Entra ID, Keycloak, Okta, e-Devlet gibi) doğrulatan Authentication Providers türüdür. Kullanıcı giriş adımında sağlayıcının yetkilendirme sayfasına yönlendirilir, orada giriş yapar ve TR7'ye geri döner; TR7 aldığı yetkilendirme koduyla belirteç alır ve kullanıcı bilgisini okur. Parola TR7'ye hiç gelmez.

Bu türde kimlik, erişim belirteciyle kullanıcı bilgisi uç noktasından alınır. Sağlayıcı OpenID Connect destekliyorsa, kimliği imzası doğrulanan ID belirtecinden okuyan OpenID Connect türü tercih edilir; iki tür aynı formu paylaşır.

Nasıl çalışır?

  1. Sağlayıcıda (ör. Google Cloud Console, Entra ID) bir uygulama kaydı oluşturulur; Client ID, Client Secret alınır ve TR7'nin Redirect URI adresi kaydedilir.
  2. TR7'de Provider Type olarak OAuth2 seçilir; OAuth Provider alanından hazır sağlayıcı ya da Custom Provider seçilir ve istemci bilgileri girilir.
  3. Profil, AGS etkin vService'in erişim akışına Authentication Provider adımı olarak eklenir; kullanıcı /oauth yolu üzerinden sağlayıcıya yönlendirilir.
  4. Sağlayıcıdan dönen kullanıcı bilgileri otomatik eşlemeyle oturum özniteliklerine yazılır ve akış success geçişinden devam eder.

Hazır OAuth Provider Kataloğu ​

OAuth Provider alanından hazır bir sağlayıcı seçildiğinde (Apple yalnızca OpenID Connect türünde listelenir) yetkilendirme, belirteç, kullanıcı bilgisi, çıkış ve belirteç iptali adresleri, varsayılan kapsamlar ve PKCE ile istemci doğrulama ayarları TR7 tarafından sağlanır; formda yalnızca istemci bilgileri (Client ID, Client Secret, OAuth Scopes, Redirect URI), sağlayıcıya özgü alanlar ve çıkış anahtarları görünür. Custom Provider seçildiğinde bütün uç noktalar elle girilir.

OAuth ProviderEk alanÇıkış ve iptal anahtarlarıNot
e-Devlet-Sign Out from Provider on LogoutKapsamlar ; ile ayrılır; TÜRKSAT ile sözleşme gerektirir
GoogleHosted Domain, Access Type, PromptRevoke Tokens on Logout
MicrosoftTenant (varsayılan common)Sign Out from Provider on LogoutEntra ID kiracısı: common, organizations, consumers ya da kiracı kimliği veya alan adı
GitHub--
GitHub EnterpriseGitHub Enterprise Address (zorunlu)-
GitLabGitLab Address (varsayılan https://gitlab.com)Revoke Tokens on Logout
KeycloakRealm URL (zorunlu)Revoke ve Sign out
OktaOkta Domain (zorunlu)Revoke ve Sign outPKCE (S256) açık
Auth0Auth0 Tenant Address (zorunlu)Revoke ve Sign out
X (Twitter)-Revoke Tokens on LogoutE-posta eşlemesi yoktur; PKCE (S256) açık
LinkedIn-Revoke Tokens on Logout
Facebook--
Yandex--

Hazır sağlayıcıların uç nokta adresleri profile yazılmaz; her çalışmada TR7'nin kataloğundan uygulanır. Sağlayıcıya özgü alanların varsayılanları (ör. Microsoft Tenant ya da Google Access Type ve Prompt) ise profile kaydedilir. Profili Custom Provider'a çevirmek adres alanlarını boş bırakır.

Sağlayıcıya Özgü Alanlar ​

Hazır bir sağlayıcı seçildiğinde formda adres alanlarının yerine sağlayıcının gerektirdiği alanlar görüntülenir:

AlanSağlayıcıAnlamı
TenantMicrosoftEntra ID kiracısı; varsayılan common.
GitHub Enterprise AddressGitHub EnterpriseKurulumun adresi; zorunlu.
GitLab AddressGitLabKurulumun adresi; varsayılan https://gitlab.com.
Realm URLKeycloakRealm adresi; zorunlu.
Okta DomainOktaOkta alan adı; zorunlu.
Auth0 Tenant AddressAuth0Kiracı adresi; zorunlu.
Hosted DomainGoogleGirişin sınırlandırılacağı Google Workspace alan adı.
Access TypeGoogleOnline (default) ya da Offline (get refresh token).
PromptGoogleNone, Consent ya da Select Account (default).

Operasyonel En İyi Uygulamalar ​

  • Uç noktalar keşifle. Custom Provider'da adresler elle yazılmak yerine Fetch Endpoints from Issuer ile doldurulmalıdır; yazım hataları giriş akışını sessizce bozar.
  • Redirect URI yol olarak. Redirect URI alanına tam adres yerine yol (/ags-portal/oauth gibi) yazıldığında aynı profil vService'in her alan adında çalışır; adres sağlayıcı tarafında da kayıtlı olmalıdır.
  • Mümkünse OpenID Connect. Sağlayıcı destekliyorsa OpenID Connect türü seçilmelidir; ID belirteci imzası doğrulanır.
  • Kilitleme sağlayıcıda. Kilitleme genellikle sağlayıcı tarafında yapılır; Lockout Behavior için No Lockout ya da Use Gateway Defaults seçilmelidir.
  • Çıkışta sağlayıcıdan da çıkış. Paylaşılan bilgisayarların kullanıldığı ortamlarda Sign Out from Provider on Logout açılmalıdır; aksi hâlde kullanıcı bir sonraki girişte parola sorulmadan içeri alınır.

Nasıl Eklenir? ​

Yeni bir OAuth2 sağlayıcısı, TR7 web yönetim arayüzü üzerinden aşağıdaki adımlarla eklenir:

  1. Sol altta bulunan TR7 logosuna tıklanarak Configuration Menu açılır.
  2. AGS → Authentication → Authentication Providers → Add adımları takip edilir.
  3. Profil için benzersiz ve açıklayıcı bir isim girilir; Provider Type olarak OAuth2 seçilir.
  4. OAuth Provider seçilir ve istemci bilgileri girilir.
  5. Add butonuna tıklanarak profil eklenir.

Profil Ekleme Formu ​

AGS → Authentication → Authentication Providers → Add adımları takip edilerek Provider Type alanında OAuth2 seçildiğinde form aşağıdaki alanlarla açılır.

OAuth2 Seçiliyken Form (Custom Provider)OAuth2 Seçiliyken Form (Custom Provider)

OAuth2 Formunun DevamıOAuth2 Formunun Devamı

INFO

Provider Name Zorunlu ​

Profilin adı; listede, akış şemasındaki adım seçiminde, oturum listesinde ve loglarda profili tanımlar. Ad cihazda benzersiz olmalıdır; aynı adla ikinci bir profil kaydedilmez ve Name is used uyarısı görüntülenir. Boş bırakıldığında Required field uyarısı görüntülenir.

INFO

Provider Type Zorunlu ​

Sağlayıcı türü; bu sayfada OAuth2 seçilidir. Tür değiştirildiğinde yalnızca yeni türün alanları görüntülenir ve kaydedilir; tür düzenleme formunda da değiştirilir.

INFO

Namespace Varsayılan: varsayılan route tablosu ​

TR7'nin sağlayıcıya yaptığı belirteç ve kullanıcı bilgisi isteklerinin çıkacağı Route Tables kaydı; internet erişimi olan route tablosu seçilmelidir. Alan cihazın varsayılan route tablosuyla dolu gelir; bu tablonun adı cihaza göre değişir (ör. DEFAULT ya da DEFAULT_ROUTE).

INFO

OAuth Provider Varsayılan: Custom Provider ​

Hazır sağlayıcılardan biri ya da Custom Provider seçilir (bkz. Hazır OAuth Provider Kataloğu). Hazır sağlayıcı seçildiğinde adres ve protokol alanları gizlenir; yalnızca Client ID, Client Secret, OAuth Scopes, Redirect URI, sağlayıcıya özgü alanlar ve çıkış anahtarları görüntülenir.

INFO

Fetch Endpoints from Issuer ​

Yalnızca Custom Provider seçiliyken görünen buton; sağlayıcının keşif belgesinden uç noktaları doldurur (bkz. Fetch Endpoints from Issuer).

INFO

Authorization URL Zorunlu (Custom Provider) ​

Kullanıcının giriş için yönlendirileceği sağlayıcı uç noktası (https://provider.com/oauth/authorize gibi).

INFO

Token URL Zorunlu (Custom Provider) ​

Yetkilendirme kodunun belirteçle değiştirildiği uç nokta.

INFO

User Info URL Zorunlu (Custom Provider) ​

Erişim belirteciyle kullanıcı bilgisinin okunduğu uç nokta.

INFO

Logout URL ​

Sağlayıcının çıkış uç noktası; isteğe bağlıdır. Girildiğinde Sign Out from Provider on Logout anahtarı görüntülenir.

INFO

Token Revocation URL ​

Sağlayıcının belirteç iptali uç noktası; isteğe bağlıdır. Girildiğinde Revoke Tokens on Logout anahtarı görüntülenir.

INFO

Client ID Zorunlu ​

Sağlayıcıda kayıtlı uygulamanın istemci kimliği.

INFO

Client Secret ​

Sağlayıcıda kayıtlı uygulamanın gizli anahtarı; maskeli alana girilir, önizlemede ******** olarak gösterilir. Genel istemcilerde (Client Authentication: Public client — no client secret sent) boş bırakılır.

INFO

OAuth Scopes ​

İstenecek kapsamlar boşlukla ayrılarak girilir (openid email profile); e-Devlet'te ; ile ayrılır. Hazır sağlayıcılar için varsayılan kapsamlar katalogda tanımlıdır; alan doldurulduğunda girilen değer kullanılır.

INFO

Redirect URI Zorunlu ​

Sağlayıcının kullanıcıyı geri göndereceği adres. Tam adres ya da yalnızca yol (/ags-portal/oauth gibi) girilir; yol girildiğinde adres, isteğin geldiği şema ve alan adıyla tamamlanır. Aynı adres sağlayıcı tarafındaki uygulama kaydına da yazılmalıdır.

INFO

Client Authentication Varsayılan: client_secret_post ​

Yalnızca Custom Provider'da görünür. İstemci kimlik bilgilerinin belirteç uç noktasına nasıl gönderileceği seçilir:

SeçenekAnlamı
Credentials in request body — client_secret_post (default)Kimlik ve gizli anahtar istek gövdesinde gönderilir.
HTTP Basic header — client_secret_basicKimlik ve gizli anahtar Authorization: Basic başlığında gönderilir.
Public client — no client secret sentGizli anahtar gönderilmez; mobil ve tek sayfa uygulamalar gibi genel istemciler için, genellikle PKCE ile birlikte.

INFO

Enable PKCE Varsayılan: Disabled ​

Yalnızca Custom Provider'da görünür. Açıldığında yetkilendirme kodunun ele geçirilmesine karşı PKCE koruması uygulanır.

PKCE Challenge Method Varsayılan: SHA256 (Recommended) ​

Yalnızca Enable PKCE açıkken görüntülenir.

SeçenekAnlamı
SHA256 (Recommended)Doğrulayıcı SHA256 ile özetlenerek gönderilir.
Plain (Not Recommended)Doğrulayıcı özetlenmeden gönderilir; yalnızca SHA256 desteklemeyen sağlayıcılar için.

INFO

User Info Request Method Varsayılan: GET with Bearer header (default) ​

Yalnızca Custom Provider'da görünür. Kullanıcı bilgisi uç noktasının nasıl çağrılacağı seçilir:

SeçenekAnlamı
GET with Bearer Header (default)Belirteç Authorization: Bearer başlığıyla GET isteğinde gönderilir.
POST Form ParametersBilgiler POST isteğinde form parametresi olarak gönderilir.

INFO

User Info Parameters Varsayılan: Disabled ​

Anahtar açıldığında kullanıcı bilgisi isteğine eklenecek ek parametreler için Parameter Name ve Parameter Value tablosu görüntülenir; her satırda iki alan da zorunludur ve Parameter Name değerleri tekrar etmez. Parametreler GET'te sorgu dizesine, POST'ta form gövdesine eklenir. Değerlerde {accessToken}, {clientId}, {clientSecret} ve {scope} yer tutucuları kullanılır.

INFO

Revoke Tokens on Logout Varsayılan: Disabled ​

Bir belirteç iptali adresi tanımlıyken görünür. Açıkken oturum kapatılırken oturumun belirteçleri sağlayıcının iptal uç noktasına gönderilir; sağlayıcı yanıt vermezse çıkış yine tamamlanır.

INFO

Sign Out from Provider on Logout Varsayılan: Disabled ​

Bir çıkış adresi tanımlıyken görünür. Açıkken yerel oturum kapatıldıktan sonra tarayıcı sağlayıcının çıkış adresine yönlendirilir; kapalıyken kullanıcı bir sonraki girişte sağlayıcıda hâlâ oturumu açık olduğu için parola sorulmadan içeri alınır.

User Attribute Mapping ​

INFO

Custom User Attribute Mapping Varsayılan: No customisation ​

Sağlayıcı yanıtındaki alanların oturum özniteliklerine nasıl eşleneceği yönetilir. Alanın solundaki bilgi çubuğu, seçili sağlayıcı için otomatik eşlenen alan sayısını gösterir; Custom Provider'da bu sayı 15'tir: 15 fields are filled in automatically for this provider. Hazır sağlayıcılarda sayı değişir (ör. Google 8, e-Devlet 9, GitHub 6, X 4). Çubuktaki ok simgesine tıklandığında otomatik eşlenen satırlar ve her birinin JSONata ifadesi listelenir; satır başına ifadeyi JSONata çalışma alanında inceleyen bir çip ile kopyalama işlemleri bulunur. Otomatik eşlemesi olmayan sağlayıcılarda çubukta No automatic mapping for this provider - every attribute has to be mapped below yazar.

Sağdaki anahtar Customised konumuna alındığında AGS Attribute ve Source Attribute tablosu görüntülenir: sol kolonda oturum özniteliği (öneri listesiyle), sağ kolonda sağlayıcı yanıtı üzerinde değerlendirilen JSONata ifadesi girilir. Anahtar açıldığında çubuğun sağında satır ekleyen + Add bağlantısı belirir. Otomatik satırla aynı özniteliği hedefleyen özel satır otomatik olanı geçersiz kılar (replaced below rozeti) ve bilgi çubuğunun metni, kaç otomatik satırın değiştirildiğini de söyleyen … fields are filled in automatically; you replace … of them biçimine döner. AGS'nin standart öznitelikleri dışında bir ad girildiğinde bu öznitelik vService'te özel kullanıcı alanı olarak tanımlanır; _ ile başlayan adlar gizli alan sayılır ve özel kullanıcı alanı üretmez.

Lockout Configuration ​

INFO

Lockout Behavior Varsayılan: Use gateway defaults ​

Bu sağlayıcıdaki başarısız denemelerin hangi kilitleme politikalarıyla sayılacağı seçilir:

SeçenekAnlamı
Use Gateway DefaultsvService'in Default Lockout Policies listesindeki politikalar kullanılır.
Replace DefaultsYalnızca Lockout Policies alanında seçilen politikalar kullanılır.
Add to DefaultsvService'in varsayılan politikalarına ek olarak Lockout Policies alanında seçilenler de kullanılır.
No LockoutBu sağlayıcıda başarısız denemeler sayılmaz, kilitleme yapılmaz.
Lockout Policies ​

Replace Defaults ya da Add to Defaults seçiliyken görüntülenir; Account Lockout Policies ekranındaki hazır ve tanımlı politikalar seçilir.

INFO

Add ​

Add butonuna tıklanarak profil eklenir; sekme kapanır ve profil listede görüntülenir.

Fetch Endpoints from Issuer ​

Custom Provider seçili formdaki Fetch Endpoints from Issuer butonu, Issuer URL ve Route Table alanlı bir pencere açar. Girilen yayıncı adresine /.well-known/openid-configuration eklenerek keşif belgesi seçilen route tablosundan (varsayılan: profilin Namespace'i) alınır; tam .well-known adresi de yapıştırılabilir.

Authorization URL ve Token URL her zaman doldurulur; User Info URL, Logout URL ve Token Revocation URL yalnızca keşif belgesinde duyurulmuşsa yazılır. Sağlayıcının duyurduğu openid profile email kapsamları eklenir, duyurulmuşsa Enable PKCE (SHA256) açılır ve Client Authentication için sağlayıcının desteklediği yöntemlerden client_secret_post, client_secret_basic ve none sırasıyla ilki seçilir.

http:// ya da https:// ile başlamayan adresler, yönlendirme yapan adresler, TR7'nin kendi adresleri, HTML sayfa döndüren adresler, 256 KB'ı aşan belgeler ve authorization_endpoint ya da token_endpoint alanını taşımayan belgeler reddedilir; getirme en fazla 8 saniye sürer. Başarı Endpoint fields were filled from the issuer's discovery document iletisiyle bildirilir. Hata iletisi Discovery failed: ile başlar, sağlayıcıdan gelen hatayı taşır ve Tip: enter the provider's identity/issuer address, not its website — it usually starts with accounts., login. or id. ipucuyla biter. İşlem kullanıcı işlem kaydına yazılmaz.