OpenIddict Angular UI 迁移指南
Angular 项目
在
environment.ts和environment.prod.ts文件中,在颁发者(issuer)的末尾添加一个斜杠:oAuthConfig: { issuer: 'https://localhost:44377/', ... },
Http.Api.Host(非分离的 IdentityServer)
在 MyApplication.HttpApi.Host.csproj 文件中,替换项目引用:
<PackageReference Include="Volo.Abp.Account.Pro.Public.Web.IdentityServer" Version="6.0.*" />替换为
<PackageReference Include="Volo.Abp.Account.Pro.Public.Web.OpenIddict" Version="6.0.*" />在 MyApplicationHttpApiHostModule.cs 文件中,替换 using 语句和模块依赖项:
using Volo.Abp.AspNetCore.Authentication.JwtBearer; using IdentityServer4.Configuration; ... typeof(AbpAccountPublicWebIdentityServerModule),替换为
using OpenIddict.Validation.AspNetCore; ... typeof(AbpAccountPublicWebOpenIddictModule),在 MyApplicationHttpApiHostModule.cs 文件中,添加如下所示的
PreConfigureServices方法,并使用您的应用程序名称作为受众:public override void PreConfigureServices(ServiceConfigurationContext context) { PreConfigure<OpenIddictBuilder>(builder => { builder.AddValidation(options => { options.AddAudiences("MyApplication"); // 替换为您的应用程序名称 options.UseLocalServer(); options.UseAspNetCore(); }); }); }在 MyApplicationHttpApiHostModule.cs 文件的
ConfigureServices方法中,替换方法调用:将
ConfigureAuthentication(context, configuration);替换为ConfigureAuthentication(context);,并按如下方式更新该方法:private void ConfigureAuthentication(ServiceConfigurationContext context) { context.Services.ForwardIdentityAuthenticationForBearer(OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme); }在 MyApplicationHttpApiHostModule.cs 文件的
OnApplicationInitialization方法中,替换中间件:app.UseJwtTokenMiddleware(); app.UseIdentityServer();替换为
app.UseAbpOpenIddictValidation();在 MyApplicationHttpApiHostModule.cs 文件的
OnApplicationInitialization方法中,删除app.UseAbpSwaggerUI选项配置中不再需要的c.OAuthClientSecret(configuration["AuthServer:SwaggerClientSecret"]);行。在
appsettings.json文件中,从 AuthServer 部分删除 SwaggerClientSecret,如下所示:"AuthServer": { "Authority": "https://localhost:44345", "RequireHttpsMetadata": "false", "SwaggerClientId": "MyApplication_Swagger" },
Http.Api.Host(分离的 IdentityServer)
在 MyApplicationHttpApiHostModule.cs 文件的
OnApplicationInitialization方法中,删除app.UseAbpSwaggerUI选项配置中不再需要的c.OAuthClientSecret(configuration["AuthServer:SwaggerClientSecret"]);行。在
appsettings.json文件中,从 AuthServer 部分删除 SwaggerClientSecret,如下所示:"AuthServer": { "Authority": "https://localhost:44345", "RequireHttpsMetadata": "false", "SwaggerClientId": "MyApplication_Swagger" },
IdentityServer 项目
该项目在 v6.0.0 之后已重命名为 AuthServer。您也可以重构项目并将其重命名为 AuthServer,以便于将来更新。
在 MyApplication.IdentityServer.csproj 文件中,替换项目引用:
<PackageReference Include="Volo.Abp.Account.Pro.Public.Web.IdentityServer" Version="6.0.*" />替换为
<PackageReference Include="Volo.Abp.Account.Pro.Public.Web.OpenIddict" Version="6.0.*" />在 MyApplicationIdentityServerModule.cs 文件中,替换 using 语句和模块依赖项:
using IdentityServer4.Configuration; using Microsoft.AspNetCore.Authentication.JwtBearer; ... typeof(AbpAccountPublicWebIdentityServerModule),替换为
using OpenIddict.Validation.AspNetCore; ... typeof(AbpAccountPublicWebOpenIddictModule),在 MyApplicationIdentityServerModule.cs 文件中,添加如下所示的
PreConfigureServices方法,并使用您的应用程序名称作为受众:public override void PreConfigureServices(ServiceConfigurationContext context) { PreConfigure<OpenIddictBuilder>(builder => { builder.AddValidation(options => { options.AddAudiences("MyApplication"); // 替换为您的应用程序名称 options.UseLocalServer(); options.UseAspNetCore(); }); }); }在 MyApplicationIdentityServerModule.cs 文件的
ConfigureServices方法中,替换 ForwardIdentityAuthenticationForBearer 的调用:context.Services.ForwardIdentityAuthenticationForBearer();替换为
context.Services.ForwardIdentityAuthenticationForBearer(OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme);在 MyApplicationIdentityServerModule.cs 文件的
ConfigureServices方法中,移除 IdentityServerOptions 配置和 JwtBearer 选项:if (Convert.ToBoolean(configuration["AuthServer:SetSelfAsIssuer"])) // 移除 { Configure<IdentityServerOptions>(options => { options.IssuerUri = configuration["App:SelfUrl"]; }); } ... context.Services.AddAuthentication() // 移除 .AddJwtBearer(options => { options.Authority = configuration["AuthServer:Authority"]; options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); options.Audience = "MyApplication"; })在 MyApplicationIdentityServerModule.cs 文件的
OnApplicationInitialization方法中,移除中间件:app.UseJwtTokenMiddleware(); app.UseIdentityServer();替换为
app.UseAbpOpenIddictValidation();要使用新的 AuthServer 页面,请用 AuthServer Index.cshtml.cs 替换 Index.cshtml.cs,并用 AuthServer Index.cshtml 替换 Index.cshtml 文件。
注意:这些文件位于 Pages 文件夹下。
抠丁客


