Graph API ile Özel B2B Konuk Kullanıcı Davetiyeleri Oluşturma
Azure AD işletmeler arası (B2B) konuk kullanıcı hesapları, harici kullanıcılar ve iş ortağı kuruluşları için uygulamalara ve hizmetlere güvenli bir şekilde erişim izni vermenin harika bir yoludur. Konuk kullanıcı hesapları, Azure AD'de ilk önce harici bir kullanıcıya davet gönderilerek oluşturulur; bu daha sonra kendi (desteklenen) IDP'leri aracılığıyla (örneğin, harici bir Azure AD örneği veya tüketici Microsoft Hesabı kullanılarak) kullanılır ve kimliği doğrulanır.
Davetiyeler genellikle standart bir e-posta şablonu kullanılarak gönderilir ve alıcının bundan sonra ne yapacağını anlamasına yardımcı olmak için az miktarda özel metin içerebilir:
Az sayıda davetiye göndermek için bu süreç tamamen iyidir ancak ek esnekliğin gerekli olduğu bazı daha karmaşık kullanım durumları da vardır. Ek işlevselliklerin gerekli olabileceği bazı örnekler şunlardır:
- Yeni bir iş uygulamasını kullanmak için çok sayıda konuk kullanıcının kiracıya toplu olarak davet edilmesi gerektiğinde
- Harici kullanıcılar için daha ayrıntılı katılım talimatları gerektiğinde
- Şirket içi bir uygulamanın konuk hesaplarını otomatik olarak sağlama yeteneğine ihtiyacı olduğunda
- İşbirliğine olanak sağlamak için çok kiracılı ortamlarda Konuk Kullanıcı davetlerini otomatikleştirirken
Buna yardımcı olmak için, konuk kullanıcı davetlerini otomatik olarak oluşturmak üzere PowerShell ve Graph API'yi kullanarak bir komut dosyası oluşturdum. Komut dosyası ayrıca, özel bir katılım iletişiminin parçası olarak gönderilebilmesi için e-posta davetinin kullanım URL'sini göndermesini ve geri göndermesini engelleme seçeneğini de içerir.
Azure AD ile ilgili daha fazla makale mi arıyorsunuz? Azure AD'de Parolasız Kimlik Doğrulamanın nasıl elde edileceğini anlatan Dominik Hoefling'in bu bloguna göz atın.
Ortamı Hazırlayın
Betik, daveti oluşturmak için Graph API'yi kullandığından, yeni bir Azure AD kayıtlı uygulamaya ihtiyaç vardır. Uygulamanın nasıl oluşturulacağına ilişkin temel bilgiler için bu makalede özetlenen talimatları takip etmek isteyeceksiniz. İzinleri atarken gereken tek giriş User.Invite.All Uygulama İzni'dir:
Artık uygulama oluşturulduğuna göre Müşteri Kimliğini, Kiracı Kimliğini ve Müşteri Sırrını not ettiğinizden emin olun. Bu değerler, betiğin Azure AD ile kimlik doğrulaması yapmasına izin vermek için gereklidir.
Komut dosyasını çalıştırma
Komut dosyasını çalıştırmak için aşağıdaki parametreler gereklidir:
- UserDisplayName - Konuk hesabının görünen adı
- UserEmail - Harici kullanıcının e-posta adresi
- ClientSecret - Uygulama kaydındaki Müşteri Sırrı
- ClientID - Uygulama kaydındaki Uygulama (İstemci) Kimliği
- TenantID - Azure AD Kiracısının Dizin (Kiracı) Kimliği
- SendInvite - Bu değerin $true olarak ayarlanması otomatik e-postayı gönderir, $false ise ödeme URL'sini ekrana döndürür
Aşağıdaki parametreler isteğe bağlıdır:
- (İsteğe bağlı) RedirectURL - Kullanıcının daveti kullandıktan sonra yönlendirileceği URL. Bu, varsayılan olarak “https://myapps.microsoft.com” olacaktır.
- (İsteğe bağlı) UserMessage - Otomatik e-postaya eklenecek bir mesaj
Parametreler yerleştirildikten sonra betiği GitHub'dan indirin ve aşağıdaki örnekte gösterildiği gibi çalıştırın:
##Declare Parameters##
$UserDisplayName = “(Guest) Sean McAvinue”
$UserEmail = “Adminseanmc@adminseanmc.com”
$clientSecret = <Client Secret Value>
$clientID = <Application (Client) ID Value>
$tenantID = <Directory (Tenant) ID Value>
$SendInvite = $True
$RedirectURL = “https://seanmcavinue.net”
$UserMessage = “You have been invited to collaborate with Contoso. Redeem this invitation to get started and you’ll be redirected to our corporate website!”
##Run Script’’
.\graph-CreateGuestUserInvitation.ps1 -UserDisplayName $UserDisplayName -UserEmail $UserEmail -ClientSecret $clientSecret -TenantID $tenantID -ClientID $clientID -SendInvite $SendInvite -UserMessage $UserMessage
Bu, davetiyeyi oluşturacak ve standart şablonu kullanarak gönderecektir. Komut dosyası, davetin ayrıntılarını aşağıda Şekil 3'te gösterildiği gibi incelenmek üzere ekrana çıkaracaktır:
Komut dosyası, Sendinvite bayrağı $false olarak ayarlanmış şekilde de çalıştırılabilir. Bu, otomatik e-postanın gönderilmesini önleyecek ve davetiyenin kullanım URL'sini ekrana döndürecektir:
Kullanma URL'si daha sonra gerekli talimatlar veya politika belgeleriyle birlikte ayrı olarak gönderilebilir. Komut dosyası, daha önce bahsedilen gereksinimlerden bazılarına uyacak şekilde genişletilebilir. Örneğin, konuk hesaplarının temel hazırlığını toplu olarak yapmak için CSV oldukça kolay bir şekilde kullanılabilir:
##Import a CSV with the following headers “Displayname”,”Email”,”Message”
$CSV = Import-Csv ExternalUsers.csv
##Loop through CSV and send invites##
Foreach($user in $csv){
.\graph-CreateGuestUserInvitation.ps1 -UserDisplayName $User.DisplayName -UserEmail $User.Email -ClientSecret $clientSecret -TenantID $tenantID -ClientID $clientID -SendInvite $true -UserMessage $User.Message
}
Birden çok kiracılıkta konuk kullanıcı oluştururken, her kiracıda bir uygulama kaydı gerekir ve ardından komut dosyası, her kiracıda provizyon sağlamak üzere bir döngüde çalıştırılabilir:
##Declare Parameters##
$UserDisplayName = “(Guest) Sean McAvinue”
$UserEmail = Adminseanmc@adminseanmc.com
##Create Tenant Details Object Array##
$TenantDetails = @([PSCustomObject]@{
clientSecret = <Tenant 1 Client Secret>
clientid = <Tenant 1 Client ID>
tenantid = <Tenant 1 Tenant ID>
},
[pscustomobject]@{
clientSecret = <Tenant 2 Client Secret>
clientid = <Tenant 2 Client ID>
tenantid = <Tenant 2 Tenant ID>
})
$SendInvite = $True
$RedirectURL = “https://seanmcavinue.net”
$UserMessage = “You have been invited to collaborate with Contoso. Redeem this invitation to get started and you’ll be redirected to our corporate website!”
##Loop through tenants##
Foreach($tenant in $TenantDetails){
##Run Script’’
.\graph-CreateGuestUserInvitation.ps1 -UserDisplayName $UserDisplayName -UserEmail $UserEmail -ClientSecret $$tenant.clientSecret -TenantID $tenant.tenantID -ClientID $tenant.clientID -SendInvite $SendInvite -UserMessage $UserMessage
}
Özet
Bu komut dosyası, konuk kullanıcı daveti sürecini otomatikleştirmek ve herhangi bir özel uygulamayla daha sorunsuz bir şekilde entegre etmek için kullanılabilir. Ayrıca çok sayıda misafir hesabının hızlı ve kolay bir şekilde provizyonunu yapmak için de kullanılabilir.
Komut dosyası GitHub'dan indirilebilir.
Not: Her zaman olduğu gibi, herhangi bir kodu üretim ortamında çalıştırmadan önce inceleyip test ettiğinizden emin olun.



