Azure Active Directory B2C'de OAuth 2.0 istemci kimlik bilgileri akışını ayarlama
Başlamadan önce, ayarladığınız ilke türünü seçmek için İlke türü seçin seçicisini kullanın. Azure Active Directory B2C, kullanıcıların uygulamalarınızla nasıl etkileşim kurduğunu tanımlamak için iki yöntem sunar: önceden tanımlanmış kullanıcı akışları veya tam olarak yapılandırılabilir özel ilkeler aracılığıyla. Bu makalede gerekli adımlar her yöntem için farklıdır.
OAuth 2.0 istemci kimlik bilgileri verme akışı, bir uygulamanın (gizli istemci) rest API gibi bir web kaynağını çağırırken kimlik doğrulaması yapmak için kullanıcının kimliğine bürünmek yerine kendi kimlik bilgilerini kullanmasına izin verir. Kullanıcının anında etkileşime geçmesi gerekmeyen ve arka planda çalışması gereken sunucular arası etkileşimler için genellikle bu izin türü kullanılır. Bu tür uygulamalar genellikle daemon veya hizmet hesabı olarak adlandırılır.
İstemci kimlik bilgileri akışında, izinler bir yönetici tarafından doğrudan uygulamanın kendisine verilir. Uygulama bir kaynağa belirteç sunduğunda, kimlik doğrulamasında kullanıcı olmadığından, kaynak uygulamanın kendisinin eylem gerçekleştirme yetkisine sahip olmasını zorlar. Bu makalede, bir uygulamayı API'yi çağırmak için yetkilendirmek için gereken adımlar ve bu API'yi çağırmak için gereken belirteçlerin nasıl alındığı açıklanmıştır.
Bu özellik genel önizleme aşamasındadır.
Uygulama kaydına genel bakış
Uygulamanızın istemci kimlik bilgileriyle oturum açmasını sağlamak ve ardından bir web API'sini çağırmak için Azure AD B2C dizinine iki uygulama kaydedersiniz.
Uygulama kaydı, uygulamanızın Azure AD B2C ile oturum açmasını sağlar. Uygulama kayıt işlemi, uygulamanızı benzersiz olarak tanımlayan istemci kimliği olarak da bilinen bir uygulama kimliği oluşturur. Ayrıca, uygulamanızın belirteçleri güvenli bir şekilde almak için kullandığı bir istemci gizli dizisi de oluşturursunuz.
Web API kaydı, uygulamanızın güvenli bir web API'sini çağırmasını sağlar. Kayıt, web API kapsamlarını içerir. Kapsamlar, web API'niz gibi korumalı kaynaklara yönelik izinleri yönetmek için bir yol sağlar. Ardından uygulamanıza web API'sinin kapsamları için izinler verirsiniz. Erişim belirteci istendiğinde, uygulamanız isteğin
.default
kapsam parametresini belirtir. Azure AD B2C, uygulamanıza verilen web API kapsamlarını döndürür.
Uygulama mimarisi ve kayıtları aşağıdaki diyagramda gösterilmiştir:
1. Adım: Web API'sini kaydetme
Bu adımda, web API'sini (App 2) kapsamlarıyla kaydedersiniz. Daha sonra uygulamanıza (Uygulama 1) bu kapsamlar için izin verirsiniz. Zaten böyle bir uygulama kaydınız varsa bu adımı atlayın ve sonraki adım olan 1.1. Adım Web API rollerini (kapsamları) tanımlama bölümüne geçin.
Web API'si uygulama kaydını (Uygulama Kimliği: 2) oluşturmak için şu adımları izleyin:
Azure Portal oturum açın.
Azure AD B2C kiracınızı içeren dizini kullandığınızdan emin olun. Portal araç çubuğunda Dizinler + abonelikler simgesini seçin.
Portal ayarlarında | Dizinler + abonelikler sayfası, Dizin adı listesinde Azure AD B2C dizininizi bulun ve ardından Değiştir'i seçin.
Azure portalında Azure AD B2C'yi arayın ve seçin.
Uygulama kayıtları'ı ve ardından Yeni kayıt'ı seçin.
Ad alanına uygulama için bir ad girin (örneğin, my-api1). Yeniden Yönlendirme URI'sinin ve Desteklenen hesap türlerinin varsayılan değerlerini değiştirmeyin.
Kayıt'ı seç.
Uygulama kaydı tamamlandıktan sonra Genel Bakış'ı seçin.
Web uygulamasını yapılandırırken daha sonra kullanmak üzere Uygulama (istemci) Kimliği değerini kaydedin.
1.1. Adım Web API'si rollerini (kapsamları) tanımlama
Bu adımda web API'si Uygulama Kimliği URI'sini yapılandıracaksınız ve ardından Uygulama rollerini tanımlayacaksınız. OAuth 2.0 kapsamları tarafından kullanılan ve API'nizi temsil eden bir uygulama kaydında tanımlanan uygulama rolleri. Uygulamanız kapsamla birlikte Uygulama Kimliği URI'sini .default
kullanır. Uygulama rollerini tanımlamak için şu adımları izleyin:
Oluşturduğunuz web API'sini seçin, örneğin my-api1.
Yönet'in altında API'yi kullanıma sunma'yı seçin.
Uygulama Kimliği URI'si'nin yanındaki Ayarla bağlantısını seçin. Varsayılan değeri (GUID) benzersiz bir adla (örneğin api) değiştirin ve kaydet'i seçin.
Uygulama Kimliği URI'sini kopyalayın. Aşağıdaki ekran görüntüsünde Uygulama Kimliği URI'sinin nasıl kopyalanması gösterilmektedir.
Yönet'in altında Bildirim'i seçerek uygulama bildirim düzenleyicisini açın. Düzenleyicide ayarı bulun
appRoles
ve öğesini hedefleyenapplications
uygulama rollerini tanımlayın. Her uygulama rolü tanımının değeri içinid
bir genel benzersiz tanımlayıcısı (GUID) olmalıdır. Microsoft PowerShell'de veya çevrimiçi bir GUID oluşturucuda komutunu çalıştıraraknew-guid
yeni bir GUID oluşturun. Hervalue
uygulama rolü tanımının özelliği,scp
talep kapsamında görünür.value
özelliği boşluk içeremez. Aşağıdaki örnekte iki uygulama rolü gösterilmektedir: okuma ve yazma:"appRoles": [ { "allowedMemberTypes": ["Application"], "displayName": "Read", "id": "d6a15e20-f83c-4264-8e61-5082688e14c8", "isEnabled": true, "description": "Readers have the ability to read tasks.", "value": "app.read" }, { "allowedMemberTypes": ["Application"], "displayName": "Write", "id": "204dc4ab-51e1-439f-8c7f-31a1ebf3c7b9", "isEnabled": true, "description": "Writers have the ability to create tasks.", "value": "app.write" }],
Bildirim değişikliklerini kaydetmek için sayfanın üst kısmında Kaydet'i seçin.
2. Adım: Uygulamayı kaydetme
Uygulamanızın istemci kimlik bilgileri akışını kullanarak Azure AD B2C ile oturum açmasını sağlamak için mevcut bir uygulamayı kullanabilir veya yeni bir uygulama kaydedebilirsiniz (Uygulama 1).
Mevcut bir uygulamayı kullanıyorsanız, uygulamanın accessTokenAcceptedVersion
öğesinin olarak ayarlandığından 2
emin olun:
- Azure portalında Azure AD B2C'yi arayın ve seçin.
- Uygulama kayıtları'ı seçin ve ardından listeden mevcut uygulamanızı seçin.
- Soldaki menüde, Yönet'in altında Bildirim'i seçerek bildirim düzenleyicisini açın.
accessTokenAcceptedVersion
öğesini bulun ve değerini olarak2
ayarlayın.- Değişiklikleri kaydetmek için sayfanın üst kısmında Kaydet'i seçin.
Yeni bir web uygulaması kaydı oluşturmak için şu adımları izleyin:
Azure portalında Azure AD B2C'yi arayın ve seçin
Uygulama kayıtları'ı ve ardından Yeni kayıt'ı seçin.
Uygulama için bir Ad girin. Örneğin, ClientCredentials_app.
Diğer değerleri olduğu gibi bırakın ve kaydet'i seçin.
Daha sonraki bir adımda kullanmak üzere Uygulama (istemci) kimliğini kaydedin.
2.1. Adım İstemci gizli dizisi oluşturma
Kayıtlı uygulama için bir istemci gizli dizisi oluşturun. Uygulamanız belirteç istediğinde kimliğini kanıtlamak için istemci gizli dizisini kullanır.
Yönet'in altında Sertifika gizli dizileri'ni &seçin.
Yeni gizli anahtar'ı seçin.
Açıklama kutusuna istemci gizli dizisi için bir açıklama girin (örneğin, clientsecret1).
Süre Sonu'nun altında gizli dizinin geçerli olduğu süreyi seçin ve ardından Ekle'yi seçin.
Gizli dizinin Değerini kaydedin. Bu değeri sonraki bir adımda yapılandırma için kullanacaksınız.
2.2. Adım Web API'sine uygulama izinleri verme
Uygulamanıza (Uygulama 1) izinleri vermek için şu adımları izleyin:
Uygulama kayıtları'ı ve ardından oluşturduğunuz uygulamayı (Uygulama 1) seçin.
Yönet'in altında API izinleri'ne tıklayın.
Yapılandırılan izinler'in altında İzin ekle'yi seçin.
API'lerim sekmesini seçin.
Web uygulamasına erişim verilmesi gereken API'yi (Uygulama 2) seçin. Örneğin, my-api1 girin.
Uygulama izni'ne tıklayın.
İzin'in altında uygulamayı genişletin ve daha önce tanımladığınız kapsamları seçin (örneğin, app.read ve app.write).
İzinler ekle'yi seçin.
Kiracı adınız> için< Yönetici onayı ver'i seçin.
Evet'i seçin.
Yenile'yi seçin ve her iki kapsam için durum altında ... için verildi ifadesinin göründüğünü doğrulayın.
3. Adım: Erişim belirteci alma
Kullanıcı akışları veya özel ilkeler için istemci kimlik bilgilerini etkinleştirmeye yönelik belirli bir eylem yoktur. Hem Azure AD B2C kullanıcı akışları hem de özel ilkeler istemci kimlik bilgileri akışını destekler. Henüz yapmadıysanız, bir kullanıcı akışı veya özel ilke oluşturun. Ardından, yetkilendirme isteği oluşturmak için sık kullandığınız API geliştirme uygulamasını kullanın. POST isteğinin gövdesi olarak aşağıdaki bilgilerle bu örneğe benzer bir çağrı oluşturun:
https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy>/oauth2/v2.0/token
- değerini Azure AD B2C kiracınızın adıyla değiştirin
<tenant-name>
. Örneğin,contoso.b2clogin.com
. - değerini kullanıcı akışınızın tam adıyla veya özel ilkeyle değiştirin
<policy>
. Tüm kullanıcı akışı türlerinin ve özel ilkelerin istemci kimlik bilgileri akışını desteklediğini unutmayın. Sahip olduğunuz herhangi bir kullanıcı akışını veya özel ilkeyi kullanabilir ya da kaydolma veya oturum açma gibi yeni bir ilke oluşturabilirsiniz.
Anahtar | Değer |
---|---|
grant_type | client_credentials |
client_id | 2. AdımDaki İstemci Kimliği Uygulamayı kaydetme. |
client_secret | 2.1. Adımdaki İstemci gizli dizisi değeri İstemci gizli dizisi oluşturun. |
kapsam | 1.1. Adımdaki Uygulama Kimliği URI'si Web API rollerini (kapsamları) ve .default tanımlayın. Örneğin https://contoso.onmicrosoft.com/api/.default , veya https://contoso.onmicrosoft.com/12345678-0000-0000-0000-000000000000/.default . |
Gerçek POST isteği aşağıdaki örneğe benzer:
İstek:
POST /<tenant-name>.onmicrosoft.com/B2C_1A_SUSI/oauth2/v2.0/token HTTP/1.1
Host: <tenant-name>.b2clogin.com
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
&client_id=33333333-0000-0000-0000-000000000000
&client_secret=FyX7Q~DuPJ...
&scope=https%3A%2F%2Fcontoso.onmicrosoft.com%2Fapi%2F.default
Yanıt:
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlBFcG5OZDlnUkNWWUc2dUs...",
"token_type": "Bearer",
"not_before": 1645172292,
"expires_in": 3600,
"expires_on": 1645175892,
"resource": "33333333-0000-0000-0000-000000000000"
}
Dönüş erişim belirteci talepleri hakkında bilgi edinin. Aşağıdaki tabloda, istemci kimlik bilgileri akışıyla ilgili talepler listelenir.
Talep | Açıklama | Değer |
---|---|---|
aud |
Belirtecin hedeflenen alıcısını tanımlar. | API'nin İstemci Kimliği . |
sub |
Hizmet sorumlusu, isteği başlatan uygulamayla ilişkilendirir. | Yetkilendirme isteğinin client_id hizmet sorumlusudur. |
azp |
Yetkili taraf - erişim belirtecinin verildiği taraf. | İsteği başlatan uygulamanın İstemci Kimliği. Yetkilendirme isteğinde client_id belirttiğiniz değerle aynıdır. |
scp |
Uygulama API'niz tarafından kullanıma sunulan kapsam kümesi (alan sınırlayıcısı). | İstemci kimlik bilgileri akışında yetkilendirme isteği kapsamı isterken .default belirteç, API tarafından kullanıma sunulan (ve uygulama yöneticisi tarafından onaylanan) kapsamların listesini içerir. Örneğin, app.read app.write . |
3.1. Adım Betik ile erişim belirteci alma
Yapılandırmanızı test etmek için aşağıdaki PowerShell betiğini kullanın:
$appId = "<client ID>"
$secret = "<client secret>"
$endpoint = "https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy>/oauth2/v2.0/token"
$scope = "<Your API id uri>/.default"
$body = "grant_type=client_credentials&scope=" + $scope + "&client_id=" + $appId + "&client_secret=" + $secret
$token = Invoke-RestMethod -Method Post -Uri $endpoint -Body $body
Yapılandırmanızı test etmek için aşağıdaki cURL betiğini kullanın:
curl --location --request POST 'https://<your-tenant>.b2clogin.com/<your-tenant>.onmicrosoft.com/<policy>/oauth2/v2.0/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--form 'grant_type="client_credentials"' \
--form 'client_id="<client ID>"' \
--form 'client_secret="<client secret>"' \
--form 'scope="<Your API id uri>/.default"'
4. Adım: Belirteci özelleştirme
Bu özellik yalnızca özel ilkeler için kullanılabilir. Kurulum adımları için, önceki seçicide Özel ilke'yi seçin.
Özel ilkeler, belirteç verme işlemini genişletmek için bir yol sağlar. OAuth 2.0 İstemci kimlik bilgilerinin kullanıcı yolculuğunu özelleştirmek için, istemci kimlik bilgilerini yapılandırma yönergelerini izleyin. Ardından, teknik profilde JwtIssuer
, oluşturduğunuz kullanıcı yolculuğuna bir başvuru içeren meta verileri ekleyin ClientCredentialsUserJourneyId
.
Aşağıdaki örnek, belirteci veren teknik profiline öğesinin nasıl ekleneceğini ClientCredentialsUserJourneyId
gösterir.
<TechnicalProfile Id="JwtIssuer">
<Metadata>
<Item Key="ClientCredentialsUserJourneyId">ClientCredentialsJourney</Item>
</Metadata>
</TechnicalProfile>
Aşağıdaki örnekte bir istemci kimlik bilgileri kullanıcı yolculuğu gösterilmektedir. İlk ve son düzenleme adımları gereklidir.
<UserJourneys>
<UserJourney Id="ClientCredentialsJourney">
<OrchestrationSteps>
<!-- [Required] Do the client credentials -->
<OrchestrationStep Order="1" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="ClientCredSetupExchange" TechnicalProfileReferenceId="ClientCredentials_Setup" />
</ClaimsExchanges>
</OrchestrationStep>
<!-- [Optional] Call a REST API or claims transformation -->
<OrchestrationStep Order="2" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="TokenAugmentation" TechnicalProfileReferenceId="TokenAugmentation" />
</ClaimsExchanges>
</OrchestrationStep>
<!-- [Required] Issue the access token -->
<OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
</OrchestrationSteps>
</UserJourney>
</UserJourneys>
Sonraki adımlar
Azure AD B2C'de kaynak sahibi parola kimlik bilgileri akışını ayarlamayı öğrenin