Microsoft kimlik platformu KIMLIK belirteçleri

kimlik belirteci, openıd Bağlan OAuth 2,0 ' de yaptığı çekirdek uzantısıdır. KIMLIK belirteçleri, yetkilendirme sunucusu tarafından verilir ve Kullanıcı hakkında bilgi taşıyan talepler içerir. Bunlar, bir erişim belirteci yerine veya bunlara gönderilebilir. KIMLIK belirteçleriyle ilgili bilgiler, istemcinin bir kullanıcının talep ettikleri kim olduğunu doğrulamasına izin verir. KIMLIK belirteçlerinin üçüncü taraf uygulamalar tarafından anlaşılması amaçlanmıştır. KIMLIK belirteçleri, yetkilendirme amacıyla kullanılmamalıdır. Erişim belirteçleri yetkilendirme için kullanılır. KIMLIK belirteçleri tarafından sağlanan talepler, uygulamanızın içindeki UX için, bir veritabanında anahtarlarolarak ve istemci uygulamasına erişim sağlamak için kullanılabilir.

Önkoşullar

Aşağıdaki makale, bu makaleye geçmeden önce yararlı olacaktır:

KIMLIK belirtecindeki talepler

KIMLIK belirteçleri JSON Web belirteçleri (JWT). Bu KIMLIK belirteçleri bir üst bilgi, yük ve imzadan oluşur. Üst bilgi ve imza, belirtecin orijinalliğini doğrulamak için kullanılır, yük ise istemciniz tarafından istenen kullanıcı hakkındaki bilgileri içerir. V 1.0 ve v 2.0 KIMLIK belirteçleri, gerçekleştirdikleri bilgilere göre farklılık taşıyor. Sürüm, istenen bitiş noktasına göre belirlenir. mevcut uygulamalar muhtemelen Azure AD uç noktasını (v 1.0) kullanırken, yeni uygulamalar "Microsoft kimlik platformu" uç noktasını (v 2.0) kullanmalıdır.

  • v 1.0: Azure AD uç noktası: https://login.microsoftonline.com/common/oauth2/authorize
  • v 2.0: Microsoft Identity platform uç noktası: https://login.microsoftonline.com/common/oauth2/v2.0/authorize

Örnek v 1.0 KIMLIK belirteci

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjdfWnVmMXR2a3dMeFlhSFMzcTZsVWpVWUlHdyIsImtpZCI6IjdfWnVmMXR2a3dMeFlhSFMzcTZsVWpVWUlHdyJ9.eyJhdWQiOiJiMTRhNzUwNS05NmU5LTQ5MjctOTFlOC0wNjAxZDBmYzljYWEiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkvIiwiaWF0IjoxNTM2Mjc1MTI0LCJuYmYiOjE1MzYyNzUxMjQsImV4cCI6MTUzNjI3OTAyNCwiYWlvIjoiQVhRQWkvOElBQUFBcXhzdUIrUjREMnJGUXFPRVRPNFlkWGJMRDlrWjh4ZlhhZGVBTTBRMk5rTlQ1aXpmZzN1d2JXU1hodVNTajZVVDVoeTJENldxQXBCNWpLQTZaZ1o5ay9TVTI3dVY5Y2V0WGZMT3RwTnR0Z2s1RGNCdGsrTExzdHovSmcrZ1lSbXY5YlVVNFhscGhUYzZDODZKbWoxRkN3PT0iLCJhbXIiOlsicnNhIl0sImVtYWlsIjoiYWJlbGlAbWljcm9zb2Z0LmNvbSIsImZhbWlseV9uYW1lIjoiTGluY29sbiIsImdpdmVuX25hbWUiOiJBYmUiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMWRiNDcvIiwiaXBhZGRyIjoiMTMxLjEwNy4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJub25jZSI6IjEyMzUyMyIsIm9pZCI6IjA1ODMzYjZiLWFhMWQtNDJkNC05ZWMwLTFiMmJiOTE5NDQzOCIsInJoIjoiSSIsInN1YiI6IjVfSjlyU3NzOC1qdnRfSWN1NnVlUk5MOHhYYjhMRjRGc2dfS29vQzJSSlEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6IkFiZUxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJMeGVfNDZHcVRrT3BHU2ZUbG40RUFBIiwidmVyIjoiMS4wIn0=.UJQrCA6qn2bXq57qzGX_-D3HcPHqBMOKDPx4su1yKRLNErVD8xkxJLNLVRdASHqEcpyDctbdHccu6DPpkq5f0ibcaQFhejQNcABidJCTz0Bb2AbdUCTqAzdt9pdgQvMBnVH1xk3SCM6d4BbT4BkLLj10ZLasX7vRknaSjE_C5DI7Fg4WrZPwOhII1dB0HEZ_qpNaYXEiy-o94UJ94zCr07GgrqMsfYQqFR7kn-mn68AjvLcgwSfZvyR_yIK75S_K37vC3QryQ7cNoafDe9upql_6pB2ybMVlgWPs_DmbJ8g0om-sPlwyn74Cc1tW3ze-Xptw_2uVdPgWyqfuWAfq6Q

Bu v 1.0 örnek belirtecini JWT.MSiçinde görüntüleyin.

Örnek v 2.0 KIMLIK belirteci

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjFMVE16YWtpaGlSbGFfOHoyQkVKVlhlV01xbyJ9.eyJ2ZXIiOiIyLjAiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vOTEyMjA0MGQtNmM2Ny00YzViLWIxMTItMzZhMzA0YjY2ZGFkL3YyLjAiLCJzdWIiOiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFJa3pxRlZyU2FTYUZIeTc4MmJidGFRIiwiYXVkIjoiNmNiMDQwMTgtYTNmNS00NmE3LWI5OTUtOTQwYzc4ZjVhZWYzIiwiZXhwIjoxNTM2MzYxNDExLCJpYXQiOjE1MzYyNzQ3MTEsIm5iZiI6MTUzNjI3NDcxMSwibmFtZSI6IkFiZSBMaW5jb2xuIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiQWJlTGlAbWljcm9zb2Z0LmNvbSIsIm9pZCI6IjAwMDAwMDAwLTAwMDAtMDAwMC02NmYzLTMzMzJlY2E3ZWE4MSIsInRpZCI6IjkxMjIwNDBkLTZjNjctNGM1Yi1iMTEyLTM2YTMwNGI2NmRhZCIsIm5vbmNlIjoiMTIzNTIzIiwiYWlvIjoiRGYyVVZYTDFpeCFsTUNXTVNPSkJjRmF0emNHZnZGR2hqS3Y4cTVnMHg3MzJkUjVNQjVCaXN2R1FPN1lXQnlqZDhpUURMcSFlR2JJRGFreXA1bW5PcmNkcUhlWVNubHRlcFFtUnA2QUlaOGpZIn0.1AFWW-Ck5nROwSlltm7GzZvDwUkqvhSQpm55TQsmVo9Y59cLhRXpvB8n-55HCr9Z6G_31_UbeUkoz612I2j_Sm9FFShSDDjoaLQr54CreGIJvjtmS3EkK9a7SJBbcpL1MpUtlfygow39tFjY7EVNW9plWUvRrTgVk7lYLprvfzw-CIqw3gHC-T7IK_m_xkr08INERBtaecwhTeN4chPC4W3jdmw_lIxzC48YoQ0dB1L9-ImX98Egypfrlbm0IBL5spFzL6JDZIRRJOu8vecJvj1mq-IUhGt0MacxX8jdxYLP-KUu2d9MbNKpCKJuZ7p8gwTL5B7NlUdh_dmSviPWrw

Bu v 2.0 örnek belirtecini JWT.MSiçinde görüntüleyin.

Aşağıda listelenen tüm JWT talepleri, aksi belirtilmedikçe hem v 1.0 hem de v 2.0 belirteçlerinde görünür.

Üst bilgi talepleri

Aşağıdaki tabloda, KIMLIK belirteçlerinde bulunan başlık talepleri gösterilmektedir.

İste Biçimlendir Açıklama
typ Dize-Always "JWT" Belirtecin bir JWT belirteci olduğunu gösterir.
alg Dize Belirteci imzalamak için kullanılan algoritmayı belirtir. Örnek: "RS256"
kid Dize Bu belirteci doğrulamak için kullanılan ortak anahtar için parmak izi. Hem v 1.0 hem de v 2.0 içinde yayınlanır id_tokens .
x5t Dize Aynı (kullanımda ve değerde) olarak kid . Bununla birlikte, bu, uyumluluk amacıyla yalnızca v 1.0 ile yayılan eski bir taleptür id_tokens .

Yük talepleri

Aşağıdaki tabloda, varsayılan olarak en fazla KIMLIK belirteçlerinde olan talepler gösterilmektedir (aksi belirtilmedikçe). Bununla birlikte, uygulamanız KIMLIK belirtecinde daha fazla talep istemek için isteğe bağlı talepler kullanabilir. İsteğe bağlı talepler, groups kullanıcıdan kullanıcının adı hakkında bilgi talep edebilir.

İste Biçimlendir Açıklama
aud Dize, uygulama KIMLIĞI GUID 'SI Belirtecin amaçlanan alıcısını tanımlar. id_tokens' De hedef kitle, uygulamanızın Azure Portal uygulamanıza atanan uygulama kimliğidir. Bu değer doğrulanacak olmalıdır. Belirtecin uygulamanızın uygulama KIMLIĞIYLE eşleşmesi başarısız olursa, belirtecin reddedilmesi gerekir.
iss Dize, veren URI Sertifikayı veren veya belirtecini döndüren "yetkilendirme sunucusu" nu tanımlar. Ayrıca, kullanıcının kimlik doğrulaması yaptığı Azure AD kiracısını tanımlar. Belirteç v 2.0 uç noktası tarafından verildiyse, URI sona ermeyecektir /v2.0 . Kullanıcının Microsoft hesabı bir tüketici kullanıcısı olduğunu gösteren GUID 9188040d-6c67-4c5b-b112-36a304b66dad . Uygulamanız, varsa uygulamada oturum açmak için gereken kiracılar kümesini kısıtlamak için talebin GUID kısmını kullanmalıdır.
iat int, UNIX zaman damgası "Çıkarılan", bu belirteç için kimlik doğrulamanın ne zaman oluştuğunu gösterir.
idp Dize, genellikle STS URI 'SI Belirtecin öznesinin kimliğini doğrulayan kimlik sağlayıcısını kaydeder. Bu değer, Kullanıcı hesabı veren konukiyle aynı kiracıda olmadığı sürece veren talebinin değeriyle aynıdır, örneğin. Talep yoksa, bunun yerine, değerinin kullanılabileceği anlamına gelir iss . Bir kuruluş bağlamında kullanılan kişisel hesaplar için (örneğin, bir Azure AD kiracısına davet edilen kişisel hesap), idp talep ' Live.com ' veya Microsoft hesabı kiracıyı içeren BIR STS URI 'si olabilir 9188040d-6c67-4c5b-b112-36a304b66dad .
nbf int, UNIX zaman damgası "NBF" (before) talebi, JWT 'ın işlenmek üzere kabul edilmeden önce geçen süreyi tanımlar.
exp int, UNIX zaman damgası "Exp" (sona erme saati) talebi, JWT 'ın işlenmek üzere kabul edilmemelidir. Belirli durumlarda, bir kaynağın bu süreden önce belirteci reddedebileceğini unutmayın. Fo Örneğin, kimlik doğrulamasında bir değişiklik gerekliyse veya bir belirteç iptali algılanırsa.
c_hash Dize Kod karması, yalnızca KIMLIK belirteci bir OAuth 2,0 yetkilendirme koduyla verildiğinde KIMLIK belirteçlerine dahil edilir. Bir yetkilendirme kodunun gerçekliğini doğrulamak için kullanılabilir. bu doğrulamanın nasıl yapılacağını anlamak için openıd Bağlan belirtiminebakın.
at_hash Dize Erişim belirteci karması, kimlik belirteçlerine yalnızca KIMLIK belirteci /authorize bir OAuth 2,0 erişim belirtecine sahip uç noktadan verildiğinde dahil edilir. Bir erişim belirtecinin orijinalliğini doğrulamak için kullanılabilir. bu doğrulamanın nasıl yapılacağını anlamak için openıd Bağlan belirtiminebakın. Bu, uç noktadan alınan KIMLIK belirteçlerinde döndürülmez /token .
aio Donuk dize Azure AD tarafından belirteç yeniden kullanımı için veri kaydetmek üzere kullanılan bir iç talep. Göz ardı edilmelidir.
preferred_username Dize Kullanıcıyı temsil eden birincil Kullanıcı adı. Belirtilen biçim olmadan bir e-posta adresi, telefon numarası veya genel Kullanıcı adı olabilir. Değeri değişebilir ve zaman içinde değişebilir. Bu değer değiştirilebiliyorsa, yetkilendirme kararları almak için kullanılmamalıdır. profileKapsam bu talebi almak için gereklidir.
email Dize emailTalep, bir e-posta adresine sahip konuk hesapları için varsayılan olarak mevcuttur. Uygulamanız, email isteğe bağlı talebikullanarak yönetilen kullanıcılar (kaynakla aynı kiracıya ait olanlar) için e-posta talebi talep edebilir. v 2.0 uç noktasında, uygulamanız email openıd Bağlan kapsamını da talep edebilir. talebi almak için hem isteğe bağlı talebi hem de kapsamı istemeniz gerekmez. E-posta talebi yalnızca kullanıcının profil bilgilerinde adreslenebilir postaları destekler.
name Dize nameTalep, belirtecin konusunu tanımlayan, insan tarafından okunabilen bir değer sağlar. Değerin benzersiz olması garanti edilemez, değiştirilebilir ve yalnızca görüntüleme amacıyla kullanılacak şekilde tasarlanmıştır. Bu profile talebi almak için kapsam gereklidir.
nonce Dize nonce, IDP'ye yapılan özgün /authorize isteğine dahil edilen parametreyle eştir. Eşleşmezse, uygulamanız belirteci reddetmeli.
oid Dize, GUID Microsoft kimlik sistemi,bu durumda bir kullanıcı hesabı olan bir nesnenin sabit tanımlayıcısı. Bu kimlik, kullanıcıyı uygulamalar arasında benzersiz bir şekilde tanımlar. Aynı kullanıcıda oturum alan iki farklı uygulama talepte aynı değeri oid alır. Microsoft Graph, bu kimliği, verilen kullanıcı id hesabının özelliği olarak geri dönecektir. , oid birden çok uygulamanın kullanıcıları arasında ilişkide yer almalarına izin profile verir, çünkü kapsamın bu talebi almak için gerekli olması gerekir. Birden çok kiracıda tek bir kullanıcı varsa, kullanıcı her kiracıda farklı bir nesne kimliği içerir; kullanıcı her hesapta aynı kimlik bilgileriyle oturum açmasına rağmen farklı hesaplar olarak kabul edilir. Talep oid bir GUID'tir ve yeniden kullanılamaz.
roles Dize dizisi Oturum açmakta olan kullanıcıya atanan roller kümesi.
rh Opak Dize Belirteçleri yeniden doğrularken Azure tarafından kullanılan bir iç talep. Yoksayılır.
sub Dize Belirteci, bir uygulamanın kullanıcısı gibi bilgileri onaylar. Bu değer sabittir ve yeniden atanamaz veya yeniden kullanılamaz. Konu çift amaçlı bir tanımlayıcıdır; belirli bir uygulama kimliğine özeldir. Tek bir kullanıcı iki farklı istemci kimlikleri kullanarak iki farklı uygulama içinde oturum alarsa, bu uygulamalar konu talebi için iki farklı değer alır. Mimarinize ve gizlilik gereksinimlerinize bağlı olarak bu durum gerekli olabilir veya bu tercihi yapmak doğru değildir.
tid Dize, GUID Kullanıcının oturum açması için kiracıyı temsil eder. İş ve okul hesapları için GUID, kullanıcının oturum açması için kuruluşun sabit kiracı kimliğidir. Kişisel kiracıda (Xbox, Teams for Life veya Microsoft hesabı gibi hizmetler) oturum açma Outlook değeri 9188040d-6c67-4c5b-b112-36a304b66dad değeridir. Bu talebi almak için, uygulamanın kapsamı isteğine sahip olması profile gerekir.
unique_name Dize Belirtecin konusunu tanımlayan ve okunabilir bir değer sunar. Bu değer belirli bir zaman noktasında benzersizdir, ancak e-postalar ve diğer tanımlayıcılar yeniden kullanılabilir. Bu değer diğer hesaplarda yeniden sızar. Bu nedenle, değer yalnızca görüntüleme amacıyla kullanılmalıdır. Yalnızca v1.0'da verilen id_tokens .
uti Opak Dize Belirteçleri yeniden doğrularken Azure tarafından kullanılan bir iç talep. Yoksayılır.
ver Dize( 1.0 veya 2.0) Uygulamanın sürümünü id_token.
hasgroups Boole Varsa, kullanıcıya not ek olarak en az bir grupta yer alan her zaman true olur. Tam gruplar talebi URI parçasını URL uzunluğu sınırlarını (şu anda 6 veya daha fazla grup) aşacaksa, JWT'ler için grup talebi yerine örtülü izin akışları için kullanılır. İstemcinin kullanıcı gruplarını ( ) belirlemek için Microsoft Graph API'sini kullanması gerektiğini https://graph.microsoft.com/v1.0/users/{userID}/getMemberObjects gösterir.
groups:src1 JSON nesnesi Uzunluğu sınırlı olan (yukarıya bakın) ancak belirteç için hala çok büyük olan belirteç istekleri için, kullanıcı için tam gruplar listesinin hasgroups bağlantısı eklenir. Dağıtılmış talep olarak JWT'ler için, SAML için talep yerine yeni bir talep groups olarak.

Örnek JWT Değeri:
"groups":"src1"
"_claim_sources: "src1" : { "endpoint" : "https://graph.microsoft.com/v1.0/users/{userID}/getMemberObjects" }

Daha fazla bilgi için bkz. Gruplar fazla çalışma talebi.

Bir kullanıcıyı güvenilir bir şekilde tanımlamak için talepleri kullanma (Konu ve Nesne Kimliği)

Bir kullanıcının kimliğini belirlemek (örneğin, veritabanında arama yapmak veya sahip olduğu izinlere karar vermek), zaman içinde sabit ve benzersiz kalacak bilgileri kullanmak kritik öneme sahip. Eski uygulamalar bazen e-posta adresi, telefon numarası veya UPN gibi alanları kullanır. Bunların hepsi zaman içinde değişebilir ve zaman içinde yeniden kullanılabilir. Örneğin, bir çalışan adını değiştirirse veya çalışana öncekiyle eşleşen bir e-posta adresi verilirse, artık çalışan yoktur. Bu nedenle, uygulamanın bir kullanıcı tanımlamak için insan tarafından okunabilir verileri kullanmama durumu kritik öneme sahip olur. İnsan tarafından okunabilir veriler genellikle birinin okuması ve değiştirmek istemesi anlamına gelir. Bunun yerine, OIDC standardı tarafından sağlanan talepleri veya Microsoft tarafından sağlanan uzantı taleplerini (ve sub talepleri) oid kullanın.

Kullanıcı başına bilgileri doğru şekilde depolamak için, gerektiğinde yönlendirme veya parçalama için kullanılan veya tek başına (GUID'ler benzersizdir) sub oid tid kullanın. Hizmetler arasında veri paylaşmanız gerekirse, en iyisi tüm uygulamaların aynı ve taleplere sahip oid + tid oid tid olmasıdır. Belge belgesinde Microsoft kimlik platformu " çift tabanlıdır; belirteç alıcısı, kiracısı ve kullanıcı birleşimine göre sub benzersizdir. Bu nedenle, bir kullanıcı için kimlik belirteci talep eden iki uygulama farklı talepler alır, ancak bu kullanıcı sub oid için aynı talepler alır.

Not

Bir kullanıcıyla idp ilgili bilgileri kiracılar arasında kullanıcıları ilişki içinde depolamak için talebi kullanma. Uygulamaların kiracılar arasında kullanıcıları izleyemeyeceklerini sağlamak için kiracılar arasında ve talepleri değiştikleri için oid sub bu işlev çalışmaz.

Bir kullanıcının bir kiracıda bulunduğu ve başka bir kiracıda kimlik doğrulaması yaptığı konuk senaryolarında, kullanıcıya hizmette yepyeni bir kullanıcı gibi davranması gerekir. Contoso kiracısı belgeleriniz ve ayrıcalıklarınız Fabrikam kiracısına uygulanmamalı. Kiracılar arasında yanlışlıkla veri sızıntısını önlemek için bu önemlidir.

Grupların fazlalık talebi

Belirteç boyutunun HTTP üst bilgi boyutu sınırlarını aşmaması için Azure AD, talepte yer alan nesne kimliklerinin sayısını groups sınırlar. Bir kullanıcı fazla kullanım sınırına (SAML belirteçleri için 150, JWT belirteçleri için 200) daha fazla gruba üye ise, Azure AD belirteçte grup talebi yaymaz. Bunun yerine, belirteçte kullanıcının grup üyeliğini almak için Microsoft Graph API'sini sorgulamasını belirten bir fazla kullanım talebi içerir.

{
  ...
  "_claim_names": {
   "groups": "src1"
    },
    {
  "_claim_sources": {
    "src1": {
        "endpoint":"[Url to get this user's group membership from]"
        }
       }
     }
  ...
}

Kimlik belirteci yaşam süresi

Varsayılan olarak, bir kimlik belirteci bir saat boyunca geçerlidir. Bir saat sonra istemcinin yeni bir kimlik belirteci edinmesi gerekir.

İstemci uygulamasının uygulama oturumunun ne sıklıkta sona erer ve kullanıcının sessizce veya etkileşimli olarak yeniden kimlik doğrulaması yapma sıklıklarını kontrol etmek için kimlik belirtecinin ömrünü ayarlayabilirsiniz. Daha fazla bilgi için yapılandırılabilir belirteç yaşam sürelerini okuyun.

Kimlik belirteci doğrulama

Kimlik belirteci doğrulama, erişim belirteci doğrulamanın ilk adımına benzer. İstemciniz belirteci kurcalanıp kurcalanmadığını kontrol eder. Ayrıca, doğru sertifikayı alannın belirteci geri gönderdiğini doğrulamak için sertifikayı onaylayanı doğrular. Kimlik belirteçleri her zaman bir JWT belirteci olduğundan, bu belirteçleri doğrulamak için birçok kitaplık vardır; kendiniz yapmak yerine bunlardan birini kullanmanızı öneririz. Yalnızca gizli istemcilerin (gizli olan istemciler) kimlik belirteçlerini doğrulaması gerektiğini unutmayın. Genel uygulamalar (tamamen kullanıcının tarayıcısı veya ev ağı gibi denetlemez bir cihaz veya ağ üzerinde çalışan kod), kimlik belirteci doğrulamadan yararlanmaz. Bunun nedeni kötü amaçlı bir kullanıcının belirteci doğrulama için kullanılan anahtarları kese ve düzenleyemediklerinin nedenidir.

Belirteci el ile doğrulamak için erişim belirteci doğrulama adım ayrıntılarına bakın. Aşağıdaki JWT talepleri, belirteçte imza doğrulandıktan sonra kimlik belirtecsinde doğrulanması gerekir. Bu talepler belirteç doğrulama kitaplığınız tarafından da doğrulanabilir:

  • Zaman damgası: , ve zaman damgasının hepsi uygun şekilde geçerli saat öncesinde veya iat nbf sonrasında exp olacaktır.
  • Hedef kitle: aud Talep, uygulamanın uygulama kimliğiyle eşleşmeli.
  • Nonce: Yükte talep, ilk istek sırasında /authorize uç noktasına geçirilen nonce nonce parametresiyle eşleşmeli.

Sonraki adımlar