项目

OpenIddict Blazor Wasm UI 迁移指南

Blazor 项目

  • MyApplicationBlazorModule.cs 中更新 ConfigureAuthentication 方法:

    builder.Services.AddOidcAuthentication(options =>
    {
        ...
        options.UserOptions.RoleClaim = JwtClaimTypes.Role;
    
        options.ProviderOptions.DefaultScopes.Add("role");
        ... 
    });
    

    按如下方式更新 UserOptionsrole scope

    builder.Services.AddOidcAuthentication(options =>
    {
        ...
        options.UserOptions.NameClaim = OpenIddictConstants.Claims.Name;
        options.UserOptions.RoleClaim = OpenIddictConstants.Claims.Role;
    
        options.ProviderOptions.DefaultScopes.Add("roles");
        ...
    });
    

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 System.Net.Http;
    using Volo.Abp.AspNetCore.Authentication.JwtBearer;
    ...
    typeof(AbpAspNetCoreAuthenticationJwtBearerModule),
    typeof(AbpAccountWebIdentityServerModule),
    

    替换为

    using OpenIddict.Validation.AspNetCore;
    ...
    typeof(AbpAccountWebOpenIddictModule),
    
  • MyApplicationHostModule.cs 中添加如下所示的 PreConfigureServices,并使用您的应用程序名称作为受众:

    public override void PreConfigureServices(ServiceConfigurationContext context)
    {
        PreConfigure<OpenIddictBuilder>(builder =>
        {
            builder.AddValidation(options =>
            {
                options.AddAudiences("MyApplication"); // 替换为您的应用程序名称
                options.UseLocalServer();
                options.UseAspNetCore();
            });
        });
    }
    
  • MyApplicationHostModule.csConfigureServices 方法中,替换方法调用

    ConfigureAuthentication(context, configuration); 替换为 ConfigureAuthentication(context); 并按如下方式更新该方法:

    private void ConfigureAuthentication(ServiceConfigurationContext context)
    {
        context.Services.ForwardIdentityAuthenticationForBearer(OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme);
    }
    
  • MyApplicationHostModule.csOnApplicationInitialization 方法中,替换中间件

    app.UseJwtTokenMiddleware();
    app.UseIdentityServer();
    

    替换为

    app.UseAbpOpenIddictValidation();
    
  • 删除 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.csOnApplicationInitialization 方法中,删除 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.csOnApplicationInitialization 方法中,移除中间件

    app.UseIdentityServer();
    
  • 要使用新的 AuthServer 页面,请将 Index.cshtml.cs 替换为 AuthServer Index.cshtml.cs,并将 Index.cshtml 文件替换为 AuthServer Index.cshtml,并将 Ids2OpenId 重命名为您的应用程序命名空间。

    注意:它可以在 Pages 文件夹下找到。

另请参阅

在本文档中