Kullanıcılarda oturum açma web uygulaması: Kod yapılandırması
Bu makalede, kullanıcıların oturum açtığı bir web uygulaması için kodun nasıl yapılandırıldığı açıklanmaktadır.
Web uygulamalarını destekleyen Microsoft kitaplıkları
Aşağıdaki Microsoft kitaplıkları bir web uygulamasını (ve web API'sini) korumak için kullanılır:
Dil / çerçeve | Proje açık GitHub |
Paket | Alma birini seçin |
Oturum açma kullanıcıları | Web API'lerine erişme | Genel kullanıma açık (GA) veya Genel önizleme1 |
---|---|---|---|---|---|---|
.NET | MSAL.NET | Microsoft.Identity.Client | — | GA | ||
.NET | Microsoft.IdentityModel | Microsoft.IdentityModel | — | 2 | 2 | GA |
ASP.NET Core | ASP.NET Core | Microsoft.AspNetCore.Authentication | Hızlı Başlangıç | GA | ||
ASP.NET Core | Microsoft.Identity.Web | Microsoft.Identity.Web | Hızlı Başlangıç | GA | ||
Java | MSAL4J | msal4j | Hızlı Başlangıç | GA | ||
Spring | spring-cloud-azure-starter-active-directory | spring-cloud-azure-starter-active-directory | Öğretici | GA | ||
Node.js | MSAL Düğümü | msal-node | Hızlı Başlangıç | GA | ||
Python | MSAL Python | msal | GA | |||
Python | kimlik | kimlik | Hızlı Başlangıç | -- |
(1) Çevrimiçi Hizmetler için Evrensel Lisans Koşulları, Genel önizlemedeki kitaplıklar için geçerlidir.
(2) Microsoft.IdentityModel kitaplığı yalnızca belirteçleri doğrular ; kimlik veya erişim belirteçleri isteyemez.
İlgilendiğiniz platforma karşılık gelen sekmeyi seçin:
Bu makaledeki kod parçacıkları ve aşağıdakiler ASP.NET Core web uygulaması artımlı öğreticisi 1. bölümden ayıklanır.
Tam uygulama ayrıntıları için bu öğreticiye başvurmak isteyebilirsiniz.
Yapılandırma dosyaları
Microsoft kimlik platformu kullanarak kullanıcılarda oturum açabilen web uygulamaları yapılandırma dosyaları aracılığıyla yapılandırılır. Bu dosyalar aşağıdaki değerleri belirtmelidir:
- Örneğin uygulamanızın ulusal bulutlarda çalışmasını istiyorsanız bulut örneği . Farklı seçenekler şunlardır:
https://login.microsoftonline.com/
Azure genel bulutu içinhttps://login.microsoftonline.us/
Azure ABD kamu içinhttps://login.microsoftonline.de/
Microsoft Entra Germany içinhttps://login.partner.microsoftonline.cn/common
21Vianet tarafından işletilen Microsoft Entra China için
- Kiracı kimliğindeki hedef kitle. Seçenekler, uygulamanızın tek kiracı mı yoksa çok kiracılı mı olduğuna bağlı olarak değişir.
- Kuruluşunuzdaki kullanıcılarda oturum açmak için Azure portalından alınan kiracı GUID'i. Etki alanı adı da kullanabilirsiniz.
organizations
herhangi bir iş veya okul hesabındaki kullanıcıları oturum açmak içincommon
herhangi bir iş veya okul hesabıyla veya Microsoft kişisel hesabıyla kullanıcıları oturum açmak içinconsumers
kullanıcıları yalnızca Microsoft kişisel hesabıyla oturum açmak için
- Azure portalından kopyalanan uygulamanızın istemci kimliği
Ayrıca yetkiliye başvurular, örneğin ve kiracı kimliği değerlerinin birleştirilmiş olduğunu görebilirsiniz.
ASP.NET Core'da , bu ayarlar appsettings.json dosyasında, "Microsoft Entra Id" bölümünde bulunur.
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "[Enter the tenantId here]",
// Client ID (application ID) obtained from the Azure portal
"ClientId": "[Enter the Client Id here]",
"CallbackPath": "/signin-oidc",
"SignedOutCallbackPath": "/signout-oidc"
}
}
ASP.NET Core'da, başka bir dosya (özellikler\launchSettings.json) uygulamanız ve çeşitli profiller için URL'yi (applicationUrl
) ve TLS/SSL bağlantı noktasını (sslPort
) içerir.
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:3110/",
"sslPort": 44321
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"webApp": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:3110/"
}
}
}
Azure portalında, uygulamanızın Kimlik Doğrulama sayfasına kaydettiğiniz yeniden yönlendirme URL'lerinin bu URL'ler ile eşleşmesi gerekir. Önceki iki yapılandırma dosyası için bunlar olacaktır https://localhost:44321/signin-oidc
. Nedeni şudur: applicationUrl
http://localhost:3110
, ancak sslPort
belirtildi (44321
). CallbackPath
, /signin-oidc
içinde tanımlandığı gibi şeklindedir appsettings.json
.
Aynı şekilde, oturumu kapatma URI'si olarak https://localhost:44321/signout-oidc
ayarlanır.
Not
Olayı işlerken çakışmayı önlemek için SignedOutCallbackPath portala veya uygulamaya ayarlanmalıdır.
Başlatma kodu
Başlatma kodu farklılıkları platforma bağlıdır. ASP.NET Core ve ASP.NET için, kullanıcıların oturum açması OpenID Connect ara yazılımına devredilir. ASP.NET veya ASP.NET Core şablonu, Azure AD v1.0 uç noktası için web uygulamaları oluşturur. Bunları Microsoft kimlik platformu uyarlamak için bazı yapılandırmalar gereklidir.
ASP.NET Core web uygulamalarında (ve web API'lerinde), denetleyiciler veya denetleyici eylemleri üzerinde bir Authorize
özniteliğiniz olduğundan uygulama korunur. Bu öznitelik, kullanıcının kimliğinin doğrulandığını denetler. .NET 6'nın yayımlanmasından önce kod başlatma Startup.cs dosyasındaydı. .NET 6 içeren yeni ASP.NET Core projeleri artık Startup.cs dosyası içermiyor. Onun yerini almak Program.cs dosyasıdır. Bu öğreticinin geri kalanı .NET 5 veya daha düşük sürümlerle ilgili.
Not
Microsoft.Identity.Web'i kullanan Microsoft kimlik platformu için yeni ASP.NET Core şablonlarıyla doğrudan başlamak isterseniz.NET 5.0 için proje şablonlarını içeren bir önizleme NuGet paketi indirebilirsiniz. Ardından, yüklendikten sonra doğrudan ASP.NET Core web uygulamalarının (MVC veya Blazor) örneğini oluşturabilirsiniz. Ayrıntılar için bkz . Microsoft.Identity.Web web uygulaması proje şablonları . Bu, sizin için aşağıdaki adımların tümünü gerçekleştireceği için en basit yaklaşımdır.
Projenizi Visual Studio'da veya veya kullanarak dotnet new mvc --auth SingleOrg
dotnet new webapp --auth SingleOrg
geçerli varsayılan ASP.NET Core web projesiyle başlatmayı tercih ederseniz aşağıdaki gibi bir kod görürsünüz:
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
Bu kod, Azure Active Directory v1.0 uygulaması oluşturmak için kullanılan eski Microsoft.AspNetCore.Authentication.AzureAD.UI NuGet paketini kullanır. Bu makalede, bu kodun yerini alan bir Microsoft kimlik platformu v2.0 uygulamasının nasıl oluşturulacağı açıklanmaktadır.
Projenize Microsoft.Identity.Web ve Microsoft.Identity.Web.UI NuGet paketlerini ekleyin.
Microsoft.AspNetCore.Authentication.AzureAD.UI
Varsa NuGet paketini kaldırın.içindeki kodu
ConfigureServices
veAddMicrosoftIdentityUI
yöntemlerini kullanabilecekAddMicrosoftIdentityWebApp
şekilde güncelleştirin.public class Startup { ... // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(Configuration, "AzureAd"); services.AddRazorPages().AddMvcOptions(options => { var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); options.Filters.Add(new AuthorizeFilter(policy)); }).AddMicrosoftIdentityUI();
Configure
Startup.cs yönteminde veapp.MapControllers();
çağrısıyla kimlik doğrulamasınıapp.UseAuthentication();
etkinleştirin.// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // more code here app.UseAuthentication(); app.UseAuthorization(); app.MapRazorPages(); app.MapControllers(); // more code here }
Bu kodda:
AddMicrosoftIdentityWebApp
Uzantı yöntemi Microsoft.Identity.Web'de tanımlanır;- Yapılandırma dosyasını okumak için seçenekleri yapılandırıyor (burada "Microsoft Entra Id" bölümünden)
- OpenID Connect seçeneklerini, yetkilinin Microsoft kimlik platformu olacak şekilde yapılandırılır.
- Belirtecin verenini doğrular.
- Ada karşılık gelen taleplerin kimlik belirtecindeki taleple
preferred_username
eşlendiğinden emin olun.
yapılandırma nesnesine ek olarak, çağırırken
AddMicrosoftIdentityWebApp
yapılandırma bölümünün adını belirtebilirsiniz. Varsayılan olarak değeridirAzureAd
.AddMicrosoftIdentityWebApp
gelişmiş senaryolar için başka parametrelere sahiptir. Örneğin, OpenID Connect ara yazılım olaylarını izleme, kimlik doğrulaması işe yaramazsa web uygulamanızın sorunlarını gidermenize yardımcı olabilir. İsteğe bağlı parametresinisubscribeToOpenIdConnectMiddlewareDiagnosticsEvents
olaraktrue
ayarlamak, HTTP yanıtından içindeki kullanıcınınHttpContext.User
kimliğine ilerledikçe bilgilerin ASP.NET Core ara yazılımı kümesi tarafından nasıl işlendiğini gösterir.AddMicrosoftIdentityUI
Uzantı yöntemi Microsoft.Identity.Web.UI içinde tanımlanır. Oturum açma ve oturumu kapatma işlemlerini gerçekleştirmek için varsayılan bir denetleyici sağlar.
Microsoft.Identity.Web'in web uygulamaları oluşturmanıza nasıl olanak sağladığı hakkında daha fazla bilgi için bkz . microsoft-identity-web'de Web Apps.