diff --git a/docs/en/Migration-Guides/OpenIddict-Blazor.md b/docs/en/Migration-Guides/OpenIddict-Blazor.md new file mode 100644 index 0000000000..69f9420ae4 --- /dev/null +++ b/docs/en/Migration-Guides/OpenIddict-Blazor.md @@ -0,0 +1,185 @@ +# OpenIddict Blazor Wasm UI Migration Guide + +## Blazor Project + +- In the **MyApplicationBlazorModule.cs** update the `ConfigureAuthentication` method: + + ```csharp + builder.Services.AddOidcAuthentication(options => + { + ... + options.UserOptions.RoleClaim = JwtClaimTypes.Role; + + options.ProviderOptions.DefaultScopes.Add("role"); + ... + }); + ``` + + Update **UserOptions** and **role scope** as below + + ```csharp + builder.Services.AddOidcAuthentication(options => + { + ... + options.UserOptions.NameClaim = OpenIddictConstants.Claims.Name; + options.UserOptions.RoleClaim = OpenIddictConstants.Claims.Role; + + options.ProviderOptions.DefaultScopes.Add("roles"); + ... + }); + ``` + +## Http.Api.Host (Non-Separated IdentityServer) + +- In the **MyApplication.HttpApi.Host.csproj** replace **project references**: + + ```csharp + + + ``` + + with + + ```csharp + + ``` + +- In the **MyApplicationHttpApiHostModule.cs** replace usings and **module dependencies**: + + ```csharp + using System.Net.Http; + using Volo.Abp.AspNetCore.Authentication.JwtBearer; + ... + typeof(AbpAspNetCoreAuthenticationJwtBearerModule), + typeof(AbpAccountWebIdentityServerModule), + ``` + + with + + ```csharp + using OpenIddict.Validation.AspNetCore; + ... + typeof(AbpAccountWebOpenIddictModule), + ``` + +- In the **MyApplicationBlazorModule.cs** add `PreConfigureServices` like below with your application name as the audience: + + ```csharp + public override void PreConfigureServices(ServiceConfigurationContext context) + { + PreConfigure(builder => + { + builder.AddValidation(options => + { + options.AddAudiences("MyApplication"); // Replace with your application name + options.UseLocalServer(); + options.UseAspNetCore(); + }); + }); + } + ``` + +- In the **MyApplicationBlazorModule.cs** `ConfigureServices` method, **replace the method call**: + + From `ConfigureAuthentication(context, configuration);` to `ConfigureAuthentication(context);` and update the method as: + + ```csharp + private void ConfigureAuthentication(ServiceConfigurationContext context) + { + context.Services.ForwardIdentityAuthenticationForBearer(OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme); + } + ``` + +- In the **MyApplicationBlazorModule.cs** `OnApplicationInitialization` method, **replace the midware**: + + ```csharp + app.UseJwtTokenMiddleware(); + app.UseIdentityServer(); + ``` + + with + + ``` + app.UseAbpOpenIddictValidation(); + ``` + +- Delete `c.OAuthClientSecret(configuration["AuthServer:SwaggerClientSecret"]);` in `app.UseAbpSwaggerUI` options configurations which is no longer needed. + +- In `appsettings.json` delete **SwaggerClientSecret** from the *AuthServer* section like below: + + ```json + "AuthServer": { + "Authority": "https://localhost:44345", + "RequireHttpsMetadata": "false", + "SwaggerClientId": "MyApplication_Swagger" + }, + ``` + +## Http.Api.Host (Separated IdentityServer) + +- In the **MyApplicationHttpApiHostModule.cs** `OnApplicationInitialization` method, delete `c.OAuthClientSecret(configuration["AuthServer:SwaggerClientSecret"]);` in `app.UseAbpSwaggerUI` options configurations which is no longer needed. + +- In `appsettings.json` delete **SwaggerClientSecret** from the *AuthServer* section like below: + + ```json + "AuthServer": { + "Authority": "https://localhost:44345", + "RequireHttpsMetadata": "false", + "SwaggerClientId": "MyApplication_Swagger" + }, + ``` + +## MyApplication.IdentityServer + +This project is renamed to **MyApplication.AuthServer** after v6.0.0-rc1. + +- In **MyApplication.IdentityServer.csproj** replace **project references**: + + ```csharp + + ``` + + with + + ```csharp + + ``` + +- In the **MyApplicationIdentityServerModule.cs** replace usings and **module dependencies**: + + ```csharp + typeof(AbpAccountWebIdentityServerModule), + ``` + + with + + ```csharp + typeof(AbpAccountWebOpenIddictModule), + ``` + +- In the **MyApplicationIdentityServerModule.cs** add `PreConfigureServices` like below with your application name as the audience: + + ```csharp + public override void PreConfigureServices(ServiceConfigurationContext context) + { + PreConfigure(builder => + { + builder.AddValidation(options => + { + options.AddAudiences("MyApplication"); // Replace with your application name + options.UseLocalServer(); + options.UseAspNetCore(); + }); + }); + } + ``` + +- In the **MyApplicationIdentityServerModule.cs** `OnApplicationInitialization` method, **remove the midware**: + + ```csharp + app.UseIdentityServer(); + ``` + +## See Also + +* [OpenIddict Step-by-Step Guide](./OpenIddict-Step-by-Step.md)