📅  最后修改于: 2023-12-03 15:13:15.325000             🧑  作者: Mango
如果你正在使用 "active-directory-aspnetcore-webapp-openidconnect-v2-aspnetcore2-2" 组件来集成 Azure Active Directory (AAD) 认证到你的 .NET Core 应用程序,但是需要将这个组件移动到另一个应用程序中使用,那么以下步骤可能会对你有所帮助。
在开始移动组件之前,强烈建议你先备份你的旧应用程序。这可以帮助你在发生任何错误或不可预测的情况下迅速恢复旧应用程序。
将 "active-directory-aspnetcore-webapp-openidconnect-v2-aspnetcore2-2" 组件从旧应用程序中复制到新应用程序。
更改 "active-directory-aspnetcore-webapp-openidconnect-v2-aspnetcore2-2" 组件在新应用程序中的环境变量,以便它可以使用新应用程序的配置。您可以将下面的环境变量值替换为您自己的值:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "<your-tenant-name>.onmicrosoft.com",
"TenantId": "<your-tenant-id>",
"ClientId": "<your-client-id>",
"ClientSecret": "<your-client-secret>",
"CallbackPath": "/signin-oidc"
},
"Logging": {
"LogLevel": {
"Default": "Warning"
}
}
}
更改新应用程序的 Startup.cs 文件中的内容,以使用新应用程序的配置。请查看以下示例代码片段:
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.IdentityModel.Protocols.OpenIdConnect;
// ...
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect(options =>
{
options.Authority = Configuration["AzureAd:Instance"] + Configuration["AzureAd:TenantId"];
options.ClientId = Configuration["AzureAd:ClientId"];
options.ClientSecret = Configuration["AzureAd:ClientSecret"];
options.ResponseType = OpenIdConnectResponseType.CodeIdToken;
options.CallbackPath = Configuration["AzureAd:CallbackPath"];
options.SaveTokens = true;
options.UseTokenLifetime = false;
options.GetClaimsFromUserInfoEndpoint = true;
options.Scope.Add("openid");
options.Scope.Add("profile");
options.Scope.Add("email");
});
// ...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
// ...
app.UseAuthentication();
// ...
}
以上步骤提供了一种将 "active-directory-aspnetcore-webapp-openidconnect-v2-aspnetcore2-2" 组件移动到另一个应用程序的方法。完成这些步骤后,请确保在部署到目标环境之前进行充分测试。