ONAYLARIM SSO Kullanım Dokümanı

Uygulamaya https://sso.onaylarim.com adresinden erişilir.

Yetkilendirme Akışını Başlatmak İçin Gerekli Parametreler

  • actionauth
  • client_id → Tarafınızla paylaşılmış, her bir uygulama için belirlenmiş tekil bir ifadedir.
    • Örnek: BC17C98CDAC9
  • hash → Süreci başlatacak uygulama tarafından oluşturulur. Detaylar aşağıda anlatılmıştır.

Hash Değeri Oluşturma

Örnek hash değeri:

202211170936b08290e84f3948d08f99_96b4057313c0acf8f35760765805919c8657d897a13f80e1edcd9100a04e5b45

Hash iki bölümden oluşur: [BirinciBölüm]_[İkinciBölüm]

Birinci Bölüm

İki parçadan oluşur: [Part1][Part2]

  • Part1 (Tarih) Örn: 2022111709362022-11-17 09:36
    DateTime.Now.ToString("yyyyMMddHHmm")
    

    Gönderilen tarih ile sunucu tarihi arasındaki fark 3 dakikadan az olmalıdır.

  • Part2 (Rastgele 20 karakter) Örn: b08290e84f3948d08f99
    Guid.NewGuid().ToString().Replace("-", "").Substring(0, 20)
    

İkinci Bölüm

Birinci bölümün gizli anahtar ile HMACSHA256 özet değeridir.

var ikinciBolum = HMACHelper.HashHMACHex("--- GİZLİ ANAHTAR ---", birinciBolum);

Final hash:

var hash = $"{birinciBolum}_{ikinciBolum}";

HMACHelper Sınıfı (C#)

public class HMACHelper 
{ 
    public static byte[] HashHMAC(byte[] key, byte[] message) 
    { 
        var hash = new HMACSHA256(key); 
        return hash.ComputeHash(message); 
    } 

    public static string HashHMACHex(string keyHex, string message) 
    { 
        byte[] hash = HashHMAC(HexDecode(keyHex), StringEncode(message)); 
        return HashEncode(hash); 
    } 

    public static byte[] StringEncode(string text) 
    { 
        var encoding = new ASCIIEncoding(); 
        return encoding.GetBytes(text); 
    } 

    public static string HashEncode(byte[] hash) 
    { 
        return BitConverter.ToString(hash).Replace("-", "").ToLower(); 
    } 

    public static byte[] HexDecode(string hex) => Convert.FromHexString(hex); 
}

Süreci Başlatma

Parametreler oluşturulduktan sonra şu URL çağrılır:

https://sso.onaylarim.com/?action=auth&client_id=AE06B19BFCC4&hash=202211170936b08290e84f3948d08f99_96b4057313c0acf8f35760765805919c8657d897a13f80e1edcd9100a04e5b45

E-imza/mobil imza başarılı olursa kullanıcı belirlenmiş uygulama adresine yönlendirilir.

Örn: https://uygulamaadresi.com

Yönlendirme:

https://uygulamaadresi.com?loginId=47d518ed-c75f-4623-825c-f97c6c1eae0b&sessionId=76974cc4a155

Oturum Bilgilerini Alma

Yönlendirme sonrası oturum bilgilerini almak için:

https://apisso.onaylarim.com/Authentication/CheckLoginId?client_id=AE06B19BFCC4&login_id=6b7922d7-1e58-45e2-bd9c-4eba130919a5&session_id=4f3c06d650d6&hash=20221117105348631bc3eb4f40b98e38_3f684b044089e1583e9cff69a04cc7786cf1a18fd8f2925eb612375fd5fafd21

Parametreler:

  • client_id → Tekil uygulama ID’si
  • login_id → Yönlendirme ile gelen loginId
  • session_id → Yönlendirme ile gelen sessionId
  • hash → Uygulama tarafından oluşturulmuş hash

Dönen Sonuç

{
  "result": {
    "citizenshipNo": "13394428978",
    "fileData": "………."
  },
  "error": null
}
  • citizenshipNo → İmza atan kişinin TCKN’si
  • fileData → E-imzalı belge (uygulamanın saklaması gerekir, SSO en fazla 1 ay saklar)