OpenIddict Angular UI 迁移指南
Angular 项目
在
environment.ts和environment.prod.ts中 为颁发者 URL 末尾添加斜杠:oAuthConfig: { issuer: 'https://localhost:44377/', ... },
Http.Api.Host(未分离的 IdentityServer)
在 MyApplication.HttpApi.Host.csproj 中替换 项目引用:
<PackageReference Include="Volo.Abp.AspNetCore.Authentication.JwtBearer" Version="6.0.*" /> <PackageReference Include="Volo.Abp.Account.Web.IdentityServer" Version="6.0.*" />替换为
<PackageReference Include="Volo.Abp.Account.Web.OpenIddict" Version="6.0.*" />在 MyApplicationHttpApiHostModule.cs 中替换 using 语句和 模块依赖项:
using Volo.Abp.AspNetCore.Authentication.JwtBearer; ... typeof(AbpAspNetCoreAuthenticationJwtBearerModule), typeof(AbpAccountWebIdentityServerModule),替换为
using OpenIddict.Validation.AspNetCore; ... typeof(AbpAccountWebOpenIddictModule),在 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.Web.IdentityServer" Version="6.0.*" />替换为
<PackageReference Include="Volo.Abp.Account.Web.OpenIddict" Version="6.0.*" />在 MyApplicationIdentityServerModule.cs 中替换 using 语句和 模块依赖项:
typeof(AbpAccountWebIdentityServerModule),替换为
typeof(AbpAccountWebOpenIddictModule),在 MyApplicationIdentityServerModule.cs 中添加如下所示的
PreConfigureServices,并使用您的应用程序名称作为受众:public override void PreConfigureServices(ServiceConfigurationContext context) { PreConfigure<OpenIddictBuilder>(builder => { builder.AddValidation(options => { options.AddAudiences("MyApplication"); // 替换为您的应用程序名称 options.UseLocalServer(); options.UseAspNetCore(); }); }); }在 MyApplicationIdentityServerModule.cs 的
OnApplicationInitialization方法中,移除中间件:app.UseIdentityServer();要使用新的 AuthServer 页面,请将 Index.cshtml.cs 替换为 AuthServer Index.cshtml.cs,并将 Index.cshtml 文件替换为 AuthServer Index.cshtml,并将 Ids2OpenId 重命名为您的应用程序命名空间。
注意:它可以在 Pages 文件夹下找到。
抠丁客


