5.5 KiB
OpenIddict MVC/Razor UI Migration Guide
Web Project (Non-Tiered Solution)
-
In MyApplication.Web.csproj replace project references:
<PackageReference Include="Volo.Abp.AspNetCore.Authentication.JwtBearer" Version="6.0.*" /> <PackageReference Include="Volo.Abp.Account.Web.IdentityServer" Version="6.0.*" />
with
<PackageReference Include="Volo.Abp.Account.Web.OpenIddict" Version="6.0.*" />
-
In MyApplicationWebModule.cs replace usings and module dependencies:
using Volo.Abp.AspNetCore.Authentication.JwtBearer; ... typeof(AbpAccountWebIdentityServerModule), typeof(AbpAspNetCoreAuthenticationJwtBearerModule),
with
typeof(AbpAccountWebOpenIddictModule),
-
In MyApplicationWebModule.cs
ConfigureServices
method update authentication configuration:ConfigureAuthentication(context, configuration);
with
ConfigureAuthentication(context);
and update the
ConfigureAuthentication
private method to:private void ConfigureAuthentication(ServiceConfigurationContext context) { context.Services.ForwardIdentityAuthenticationForBearer(OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme); }
- In the MyApplicationWebModule.cs add
PreConfigureServices
like below with your application name as the audience:
public override void PreConfigureServices(ServiceConfigurationContext context) { PreConfigure<OpenIddictBuilder>(builder => { builder.AddValidation(options => { options.AddAudiences("MyApplication"); // Replace with your application name options.UseLocalServer(); options.UseAspNetCore(); }); }); }
- In the MyApplicationWebModule.cs add
-
In MyApplicationWebModule.cs
OnApplicationInitialization
method replace IdentityServer and JwtToken midwares:app.UseJwtTokenMiddleware(); app.UseIdentityServer();
with
app.UseAbpOpenIddictValidation();
Web Project (Tiered Solution)
-
In the MyApplicationWebModule.cs update the
AddAbpOpenIdConnect
configurations:.AddAbpOpenIdConnect("oidc", options => { options.Authority = configuration["AuthServer:Authority"]; options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); options.ResponseType = OpenIdConnectResponseType.CodeIdToken; options.ClientId = configuration["AuthServer:ClientId"]; options.ClientSecret = configuration["AuthServer:ClientSecret"]; options.UsePkce = true; // Add this line options.SaveTokens = true; options.GetClaimsFromUserInfoEndpoint = true options.Scope.Add("roles"); // Replace "role" with "roles" options.Scope.Add("email"); options.Scope.Add("phone"); options.Scope.Add("MyApplication"); });
Replace role scope to roles and add UsePkce and SignoutScheme options.
IdentityServer
This project is renamed to AuthServer after v6.0.0-rc1. You can also refactor and rename your project to AuthServer for easier updates in the future.
-
In MyApplication.IdentityServer.csproj replace project references:
<PackageReference Include="Volo.Abp.Account.Web.IdentityServer" Version="6.0.*" />
with
<PackageReference Include="Volo.Abp.Account.Web.OpenIddict" Version="6.0.*" />
-
In MyApplicationIdentityServerModule.cs replace usings and module dependencies:
typeof(AbpAccountWebIdentityServerModule),
with
typeof(AbpAccountWebOpenIddictModule),
-
In the MyApplicationIdentityServerModule.cs add
PreConfigureServices
like below with your application name as the audience:public override void PreConfigureServices(ServiceConfigurationContext context) { PreConfigure<OpenIddictBuilder>(builder => { builder.AddValidation(options => { options.AddAudiences("MyApplication"); // Replace with your application name options.UseLocalServer(); options.UseAspNetCore(); }); }); }
-
In MyApplicationIdentityServerModule.cs
OnApplicationInitialization
method remove IdentityServer midware:app.UseIdentityServer();
-
To use the new AuthServer page, replace Index.cshtml.cs with AuthServer Index.cshtml.cs and Index.cshtml file with AuthServer Index.cshtml and rename Ids2OpenId with your application namespace.
Note: It can be found under the Pages folder.
Http.Api.Host
-
In the MyApplicationHttpApiHostModule.cs
OnApplicationInitialization
method, deletec.OAuthClientSecret(configuration["AuthServer:SwaggerClientSecret"]);
inapp.UseAbpSwaggerUI
options configurations which is no longer needed. -
In
appsettings.json
delete SwaggerClientSecret from the AuthServer section like below:"AuthServer": { "Authority": "https://localhost:44345", "RequireHttpsMetadata": "false", "SwaggerClientId": "MyApplication_Swagger" },