Uygulamaların kullanıcı veritabanını tutarak, kullanıcı kayıt ve giriş işlemleri güvenli olarak yönetir.
Genel Bakış
Logo PaaS platformunda kullanıcı yönetimi işlemlerini yerine getirir. IDM servisi, kullanıcı arayüzü veya API uçları ile uygulamanıza entegre edilebilir.
IDM servisi ortak kullanıcı havuzu yapısı ile platform servisleri ve uygulamalar arasında tek oturum açma (SSO - Single Sign On) desteği sunar. Kullanıcı oturum kapatma(log out) işleminde kullanıcıyı ister ilgili uygulamadan, isterseniz tüm PaaS uygulamalarından çıkış yaptırabilirsiniz.
Uluslararası Oauth 2.0 protokoküne uygun olarak erişim bileti (access token) ve şifre onayı (password grant) operasyonlarını destekler. Bu protokoI yardımıyla, IDM servisi üzerinden diğer kimlik yönetim sistemlerinde kayıtlı (Google, Facebook ) kullanıcılar ile giriş yapabilirsiniz. IDM servisi, son kullanıcılara ait şifreleri veritabanında şifrelemektedir. Geliştiriciler veya operasyon ekipleri bu şifrelere hiç bir şekilde erişemez. Şifre değiştirme işlemleri son kullanıcı tarafından onay mekanizması ile değiştirilebilir.
Kullanım Senaryoları
Merkezi kullanıcı listesi oluşturma
Kullanıcı kayıt işlemleri
- Kullanıcı oturum açma (login)
- Kullanıcı oturum kapatma(log out)
- Güvenli şifre kayıt
- Şifre sıfırlama
- Excelden kullanıcı aktarımı
Kullanıcı Arayüzü
Kullanıcı Oturum Açma
Şifremi Unuttum
Teknik Özellikler
- Oauth 2.0 standardı
API Dokümantasyonu
Swagger UI: http://dev-linux.logo-paas.com:5100/api-docs/
IDM Yönetici Paneli
Swagger UI: http://dev-linux.logo-paas.com:5100/idmweb/
IDM Konfigurasyon Paneli
Swagger UI: http://dev-linux.logo-paas.com:5100/settings/ui/
İlişkili Platform Servisleri
- RBMS: MsSQL veya PostgreSQL
- NoSQL (multiple instance çalışma durumunda session storage olarak): MongoDB
- Apache Kafka
- CloudControl Servis
IDM'e Uygulama Kaydetme
1- IDM sistemine yeni bir uygulama kaydetmek için öncelikle, aşağıdaki adrese çağrı yapılarak geçici erişim anahtarı alınmalıdır. Üretilen geçici anahtar expireinmins süresi kadar geçerli olacaktır.
http://idmadresi/api/login/generate/DB8C2EE8-CE4A-40A2-A6DA-C5B99897A7FC/expireinmins=50
2- IDM Swagger UI üzerinden /api/security/{id} ucu ile yeni uygulamanın bilgileri kaydedilebilir.
- Id ve SecuritySecret parametrelerine sırasıyla, yeni uygulama için random olarak oluşturulan SecurityId ve SecuritySecret bilgisi girilecektir.
- AccessKey parametresine ise bir önceki adımda elde edilen geçici erişim kodu verilmelidir.
- GrantType parametresi; yeni uygulama IDM'den response_type=token formatı ile browser üzerinden token alacaksa (tek aşamada), "Implicit" olarak girilmelidir.
3- Kaydedilen uygulama IDM Swagger UI üzerinden /api/security/{id}/validate ucu ile doğrulanabilir
IDM'e Kullanarak Access Token Alma
Uygulama kaydı yapıldıktan sonra IDM sistemi üzerinden access token 3 farklı şekilde alınabilir.
1- Rest çağrısı ile backend üzerinden token alma
Uygulama backendi üzerinden IDM UI'a yönlendirme yapmaksızın access token almak için aşağıdaki çağrı yapılabilir.
- Client_id ve secret için ilgili uygulamanın bilgileri kullanılmalıdır.
- grant_type=password parametresi sabit olarak gönderilmelidir.
2- SecuritySecret kullanılmadan redirecturi kontrolü ile IDM login ekranı kullanılarak access token alma
Security secret'ın kullanılamadığı ve sadece front-end kodun bulunduğu ortamlarda IDM üzerinden token almak için, aşağıdaki adres formatında bold ile yazılan kısımlar değiştirilerek IDM login ekranına yönlendirme yapılması sağlanabilir.
Bu yöntem redirecturi konfigurasyonu gerektirdiği için ihtiyaç olmadıkça kullanılmamalıdır. Bunun yerine bir sonraki başlıkta anlatılan 3. yöntem önerilmektedir.
Örnek: http://stg-idm.vyapari-mumbai.com/connect/authorize?client_id=ca3ca995-3b1e-4e01-81e1-1f226686a3f7&scope=vendorExtensions&response_type=token&redirect_uri=http%3A%2F%2Fwww.logo.com.tr%2F
Giriş yapıldıktan sonra IDM redirect uri'de belirtilen adrese browser'ı yönlendirecek ve url fragment formatında access token'ı url'e ekleyecektir.
Not: Bu yöntemin kullanılabilmesi için uygulama kaydı yapılırken GrantType: "Implicit" olarak belirlenmeli ve RedirectUri bölümü doldurulmalıdır. IDM api'leri üzerinden bu bilgiler değiştirilebileceği gibi, AuthorizationWeb UI uygulama güvenliği menüsü üzerinden ilgili uygulama için bu bilgiler güncellenebilir.
3- SecuritySecret ile IDM login ekranı kullanılarak (2 aşamalı) access token alma
IDM kullanımında Single Signon operasyonları için önerilen yöntemdir. 2 aşamalı olarak çalışmaktadır;
- İlk aşamada bir önceki yöntemde olduğu gibi browser üzerinden IDM'e yönlendirme yapılır. (Aşağıda bold olarak belirtilen alanlar değiştirilmelidir)
http://idmadresi/connect/authorize/callback?client_id=securityid&scope=offline_access&response_type=code&redirect_uri=urlencoded_redirecturi
Örnek: http://stg-idm.vyapari-mumbai.com/connect/authorize/callback?client_id=e172fe44-8a84-4759-aceb-0b65c6d35e19&scope=offline_access&response_type=code&redirect_uri=http%3A%2F%2Fwww.logo.com.tr%2F - Giriş yapıldıktan sonra browser, redirect uri de belirtilen adrese geçici kod içeren bir query string parametresi ("code") ile geri yönlendirilir.
- İkinci aşamada uygulama gelen "code" bilgisini alıp backend'de IDM'e bu bilgiyi ileterek asıl access token'ı alır. Redirect uri olarak ilk çağrıda gönderilen adres aynı şekilde post body'de parametre olarak iletilmelidir.
Not: Bu yöntemin kullanılabilmesi için uygulama kaydı yapılırken GrantType: "AuthorizationCode" (default değer) olarak belirtilmiş olmalıdır. RedirectUri verilmesine gerek yoktur.
IDM'den logout olma
IDM login ekranı kullanılarak alınan access token'ların invalide edilmesi ve Single Sign On oturumunun düşürülmesi için idm'in logout ucu aşağıdaki şekilde çağrılmalıdır.
- Bu çağrı yapıldığında aktif kullanıcı için yaratılan bütün token'lar invalide edilmekte ve IDM login arayüzü üzerinden açılmış olan (başka bir uygulamadan idm'e yönlendirme yapıldığında önceden açılmış bir oturum varsa tekrar kullanıcı adı ve şifre sorulmasını engelleyen) oturum sonlandırılır.
- Logout işleminden sonra aşağıda urlencoded_redirect_uri olarak belirtilen adrese yönlendirme yapılır.
http://idmadresi/account/logout?redirect_uri=urlencoded_redirecturi&forcesignout=True&appid=securityid