mirror of https://github.com/abpframework/abp
Merge pull request #13539 from abpframework/auto-merge/rel-6-0/1237
Merge branch dev with rel-6.0pull/13548/head
commit
82d53070c2
@ -0,0 +1,170 @@
|
||||
# OpenIddict Angular UI Migration Guide
|
||||
|
||||
## Angular Project
|
||||
|
||||
- In `environment.ts` and `environment.prod.ts` **add a trailing slash at the end of the issuer**:
|
||||
|
||||
```typescript
|
||||
oAuthConfig: {
|
||||
issuer: 'https://localhost:44377/',
|
||||
...
|
||||
},
|
||||
```
|
||||
|
||||
## Http.Api.Host (Non-Separated IdentityServer)
|
||||
|
||||
- In **MyApplication.HttpApi.Host.csproj** replace **project references**:
|
||||
|
||||
```csharp
|
||||
<PackageReference Include="Volo.Abp.AspNetCore.Authentication.JwtBearer" Version="6.0.0-rc.1" />
|
||||
<PackageReference Include="Volo.Abp.Account.Web.IdentityServer" Version="6.0.0-rc.1" />
|
||||
```
|
||||
|
||||
with
|
||||
|
||||
```csharp
|
||||
<PackageReference Include="Volo.Abp.Account.Web.OpenIddict" Version="6.0.0-rc.1" />
|
||||
```
|
||||
|
||||
- In the **MyApplicationHttpApiHostModule.cs** replace usings and **module dependencies**:
|
||||
|
||||
```csharp
|
||||
using Volo.Abp.AspNetCore.Authentication.JwtBearer;
|
||||
...
|
||||
typeof(AbpAspNetCoreAuthenticationJwtBearerModule),
|
||||
typeof(AbpAccountWebIdentityServerModule),
|
||||
```
|
||||
|
||||
with
|
||||
|
||||
```csharp
|
||||
using OpenIddict.Validation.AspNetCore;
|
||||
...
|
||||
typeof(AbpAccountWebOpenIddictModule),
|
||||
```
|
||||
|
||||
- In the **MyApplicationHttpApiHostModule.cs** add `PreConfigureServices` like below with your application name as the audience:
|
||||
|
||||
```csharp
|
||||
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 **MyApplicationHttpApiHostModule.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 **MyApplicationHttpApiHostModule.cs** `OnApplicationInitialization` method, **replace the midware**:
|
||||
|
||||
```csharp
|
||||
app.UseJwtTokenMiddleware();
|
||||
app.UseIdentityServer();
|
||||
```
|
||||
|
||||
with
|
||||
|
||||
```csharp
|
||||
app.UseAbpOpenIddictValidation();
|
||||
```
|
||||
|
||||
- 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"
|
||||
},
|
||||
```
|
||||
|
||||
## 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"
|
||||
},
|
||||
```
|
||||
|
||||
## 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**:
|
||||
|
||||
```csharp
|
||||
<PackageReference Include="Volo.Abp.Account.Web.IdentityServer" Version="6.0.0-rc.1" />
|
||||
```
|
||||
|
||||
with
|
||||
|
||||
```csharp
|
||||
<PackageReference Include="Volo.Abp.Account.Web.OpenIddict" Version="6.0.0-rc.1" />
|
||||
```
|
||||
|
||||
- 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<OpenIddictBuilder>(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();
|
||||
```
|
||||
|
||||
- To use the new AuthServer page, replace **Index.cshtml.cs** with [AuthServer Index.cshtml.cs](https://github.com/abpframework/abp-samples/blob/master/Ids2OpenId/src/Ids2OpenId.IdentityServer/Pages/Index.cshtml) and **Index.cshtml** file with [AuthServer Index.cshtml](https://github.com/abpframework/abp-samples/blob/master/Ids2OpenId/src/Ids2OpenId.IdentityServer/Pages/Index.cshtml.cs) and rename **Ids2OpenId** with your application namespace.
|
||||
|
||||
> Note: It can be found under the *Pages* folder.
|
||||
|
||||
## See Also
|
||||
|
||||
* [OpenIddict Step-by-Step Guide](OpenIddict-Step-by-Step.md)
|
||||
@ -0,0 +1,175 @@
|
||||
# OpenIddict Blazor-Server UI Migration Guide
|
||||
|
||||
## Blazor Project (Non-Tiered Solution)
|
||||
|
||||
- In the **MyApplication.Blazor.csproj** replace **project references**:
|
||||
|
||||
```csharp
|
||||
<PackageReference Include="Volo.Abp.AspNetCore.Authentication.JwtBearer" Version="6.0.0-rc.1" />
|
||||
<PackageReference Include="Volo.Abp.Account.Web.IdentityServer" Version="6.0.0-rc.1" />
|
||||
```
|
||||
|
||||
with
|
||||
|
||||
```csharp
|
||||
<PackageReference Include="Volo.Abp.Account.Web.OpenIddict" Version="6.0.0-rc.1" />
|
||||
```
|
||||
|
||||
- In the **MyApplicationBlazorModule.cs** replace usings and **module dependencies**:
|
||||
|
||||
```csharp
|
||||
using System;
|
||||
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<OpenIddictBuilder>(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
|
||||
|
||||
```csharp
|
||||
app.UseAbpOpenIddictValidation();
|
||||
```
|
||||
|
||||
## Blazor Project (Tiered Solution)
|
||||
|
||||
- In the **MyApplicationWebModule.cs** update the `AddAbpOpenIdConnect` configurations:
|
||||
|
||||
```csharp
|
||||
.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.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 with **roles**.
|
||||
|
||||
## 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**:
|
||||
|
||||
```csharp
|
||||
<PackageReference Include="Volo.Abp.Account.Web.IdentityServer" Version="6.0.0-rc.1" />
|
||||
```
|
||||
|
||||
with
|
||||
|
||||
```csharp
|
||||
<PackageReference Include="Volo.Abp.Account.Web.OpenIddict" Version="6.0.0-rc.1" />
|
||||
```
|
||||
|
||||
- In **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<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**:
|
||||
|
||||
```csharp
|
||||
app.UseIdentityServer();
|
||||
```
|
||||
|
||||
## Http.Api.Host
|
||||
|
||||
- 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"
|
||||
},
|
||||
```
|
||||
|
||||
- To use the new AuthServer page, replace **Index.cshtml.cs** with [AuthServer Index.cshtml.cs](https://github.com/abpframework/abp-samples/blob/master/Ids2OpenId/src/Ids2OpenId.IdentityServer/Pages/Index.cshtml) and **Index.cshtml** file with [AuthServer Index.cshtml](https://github.com/abpframework/abp-samples/blob/master/Ids2OpenId/src/Ids2OpenId.IdentityServer/Pages/Index.cshtml.cs) and rename **Ids2OpenId** with your application namespace.
|
||||
|
||||
> Note: It can be found under the *Pages* folder.
|
||||
|
||||
## See Also
|
||||
|
||||
* [OpenIddict Step-by-Step Guide](OpenIddict-Step-by-Step.md)
|
||||
@ -0,0 +1,189 @@
|
||||
# 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
|
||||
<PackageReference Include="Volo.Abp.AspNetCore.Authentication.JwtBearer" Version="6.0.0-rc.1" />
|
||||
<PackageReference Include="Volo.Abp.Account.Web.IdentityServer" Version="6.0.0-rc.1" />
|
||||
```
|
||||
|
||||
with
|
||||
|
||||
```csharp
|
||||
<PackageReference Include="Volo.Abp.Account.Web.OpenIddict" Version="6.0.0-rc.1" />
|
||||
```
|
||||
|
||||
- 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<OpenIddictBuilder>(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
|
||||
|
||||
```csharp
|
||||
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"
|
||||
},
|
||||
```
|
||||
|
||||
## 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**:
|
||||
|
||||
```csharp
|
||||
<PackageReference Include="Volo.Abp.Account.Web.IdentityServer" Version="6.0.0-rc.1" />
|
||||
```
|
||||
|
||||
with
|
||||
|
||||
```csharp
|
||||
<PackageReference Include="Volo.Abp.Account.Web.OpenIddict" Version="6.0.0-rc.1" />
|
||||
```
|
||||
|
||||
- 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<OpenIddictBuilder>(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();
|
||||
```
|
||||
|
||||
- To use the new AuthServer page, replace **Index.cshtml.cs** with [AuthServer Index.cshtml.cs](https://github.com/abpframework/abp-samples/blob/master/Ids2OpenId/src/Ids2OpenId.IdentityServer/Pages/Index.cshtml) and **Index.cshtml** file with [AuthServer Index.cshtml](https://github.com/abpframework/abp-samples/blob/master/Ids2OpenId/src/Ids2OpenId.IdentityServer/Pages/Index.cshtml.cs) and rename **Ids2OpenId** with your application namespace.
|
||||
|
||||
> Note: It can be found under the *Pages* folder.
|
||||
|
||||
## See Also
|
||||
|
||||
* [OpenIddict Step-by-Step Guide](OpenIddict-Step-by-Step.md)
|
||||
@ -0,0 +1,166 @@
|
||||
# OpenIddict MVC/Razor UI Migration Guide
|
||||
|
||||
## Web Project (Non-Tiered Solution)
|
||||
|
||||
- In **MyApplication.Web.csproj** replace **project references**:
|
||||
|
||||
```csharp
|
||||
<PackageReference Include="Volo.Abp.AspNetCore.Authentication.JwtBearer" Version="6.0.0-rc.1" />
|
||||
<PackageReference Include="Volo.Abp.Account.Web.IdentityServer" Version="6.0.0-rc.1" />
|
||||
```
|
||||
|
||||
with
|
||||
|
||||
```csharp
|
||||
<PackageReference Include="Volo.Abp.Account.Web" Version="6.0.0-rc.1" />
|
||||
```
|
||||
|
||||
- In **MyApplicationWebModule.cs** replace usings and **module dependencies**:
|
||||
|
||||
```csharp
|
||||
using Volo.Abp.AspNetCore.Authentication.JwtBearer;
|
||||
...
|
||||
typeof(AbpAccountWebIdentityServerModule),
|
||||
typeof(AbpAspNetCoreAuthenticationJwtBearerModule),
|
||||
```
|
||||
|
||||
with
|
||||
|
||||
```csharp
|
||||
typeof(AbpAccountWebModule),
|
||||
```
|
||||
|
||||
- In **MyApplicationWebModule.cs** `ConfigureServices` method **update authentication configuration**:
|
||||
|
||||
```csharp
|
||||
ConfigureAuthentication(context, configuration);
|
||||
```
|
||||
|
||||
with
|
||||
|
||||
```csharp
|
||||
ConfigureAuthentication(context);
|
||||
```
|
||||
|
||||
and update the `ConfigureAuthentication` private method to:
|
||||
|
||||
```csharp
|
||||
private void ConfigureAuthentication(ServiceConfigurationContext context)
|
||||
{
|
||||
context.Services.ForwardIdentityAuthenticationForBearer(OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme);
|
||||
}
|
||||
```
|
||||
|
||||
- In **MyApplicationWebModule.cs** `OnApplicationInitialization` method **replace IdentityServer and JwtToken midwares**:
|
||||
|
||||
```csharp
|
||||
app.UseJwtTokenMiddleware();
|
||||
app.UseIdentityServer();
|
||||
```
|
||||
|
||||
with
|
||||
|
||||
```csharp
|
||||
app.UseAbpOpenIddictValidation();
|
||||
```
|
||||
|
||||
|
||||
## Web Project (Tiered Solution)
|
||||
|
||||
- In the **MyApplicationWebModule.cs** update the `AddAbpOpenIdConnect` configurations:
|
||||
|
||||
```csharp
|
||||
.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**:
|
||||
|
||||
```csharp
|
||||
<PackageReference Include="Volo.Abp.Account.Web.IdentityServer" Version="6.0.0-rc.1" />
|
||||
```
|
||||
|
||||
with
|
||||
|
||||
```csharp
|
||||
<PackageReference Include="Volo.Abp.Account.Web.OpenIddict" Version="6.0.0-rc.1" />
|
||||
```
|
||||
|
||||
- In **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<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**:
|
||||
|
||||
```csharp
|
||||
app.UseIdentityServer();
|
||||
```
|
||||
|
||||
- To use the new AuthServer page, replace **Index.cshtml.cs** with [AuthServer Index.cshtml.cs](https://github.com/abpframework/abp-samples/blob/master/Ids2OpenId/src/Ids2OpenId.IdentityServer/Pages/Index.cshtml) and **Index.cshtml** file with [AuthServer Index.cshtml](https://github.com/abpframework/abp-samples/blob/master/Ids2OpenId/src/Ids2OpenId.IdentityServer/Pages/Index.cshtml.cs) 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, 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"
|
||||
},
|
||||
```
|
||||
|
||||
## See Also
|
||||
|
||||
* [OpenIddict Step-by-Step Guide](OpenIddict-Step-by-Step.md)
|
||||
@ -0,0 +1,229 @@
|
||||
# Migrating from IdentityServer to OpenIddict Step by Step Guide
|
||||
|
||||
This guide provides layer-by-layer guidance for migrating your existing application to [OpenIddict](https://github.com/openiddict/openiddict-core) from IdentityServer. ABP startup templates use `OpenIddict` OpenId provider from v6.0.0-rc1 by default and `IdentityServer` projects are renamed to `AuthServer` in tiered/separated solutions. Since OpenIddict is only available with ABP v6.0, you will need to update your existing application in order to apply OpenIddict changes.
|
||||
|
||||
## History
|
||||
We are not removing Identity Server packages and we will continue to release new versions of IdentityServer-related NuGet/NPM packages. That means you won't have an issue while upgrading to v6.0 when the stable version releases. We will continue to fix bugs in our packages for a while. ABP 7.0 will be based on .NET 7. If Identity Server continues to work with .NET 7, we will also continue to ship NuGet packages for our IDS integration.
|
||||
|
||||
On the other hand, Identity Server ends support for the open-source Identity Server at the end of 2022. The Identity Server team has decided to move to Duende IDS and ABP will not be migrated to the commercial Duende IDS. You can see the Duende Identity Server announcement from [this link](https://blog.duendesoftware.com/posts/20220111_fair_trade).
|
||||
|
||||
## OpenIddict Migration Steps
|
||||
|
||||
Use the `abp update` command to update your existing application. See [Upgrading docs](../Upgrading.md) for more info. Apply required migrations by following the [Migration Guides](Index.md) based on your application version.
|
||||
|
||||
### Domain.Shared Layer
|
||||
|
||||
- In **MyApplication.Domain.Shared.csproj** replace **project reference**:
|
||||
```csharp
|
||||
<PackageReference Include="Volo.Abp.IdentityServer.Domain.Shared" Version="6.0.0-rc.1" />
|
||||
```
|
||||
with
|
||||
```csharp
|
||||
<PackageReference Include="Volo.Abp.OpenIddict.Domain.Shared" Version="6.0.0-rc.1" />
|
||||
```
|
||||
|
||||
- In **MyApplicationDomainSharedModule.cs** replace usings and **module dependencies:**
|
||||
|
||||
```csharp
|
||||
using Volo.Abp.IdentityServer;
|
||||
...
|
||||
typeof(AbpIdentityServerDomainSharedModule)
|
||||
```
|
||||
with
|
||||
```csharp
|
||||
using Volo.Abp.OpenIddict;
|
||||
...
|
||||
typeof(AbpOpenIddictDomainSharedModule)
|
||||
|
||||
### Domain Layer
|
||||
|
||||
- In **MyApplication.Domain.csproj** replace **project references**:
|
||||
|
||||
```csharp
|
||||
<PackageReference Include="Volo.Abp.IdentityServer.Domain" Version="6.0.0-rc.1" />
|
||||
<PackageReference Include="Volo.Abp.PermissionManagement.Domain.IdentityServer" Version="6.0.0-rc.1" />
|
||||
```
|
||||
|
||||
with
|
||||
|
||||
```csharp
|
||||
<PackageReference Include="Volo.Abp.OpenIddict.Domain" Version="6.0.0-rc.1" />
|
||||
<PackageReference Include="Volo.Abp.PermissionManagement.Domain.OpenIddict" Version="6.0.0-rc.1" />
|
||||
```
|
||||
|
||||
- In **MyApplicationDomainModule.cs** replace usings and **module dependencies**:
|
||||
|
||||
```csharp
|
||||
using Volo.Abp.IdentityServer;
|
||||
using Volo.Abp.PermissionManagement.IdentityServer;
|
||||
...
|
||||
typeof(AbpIdentityServerDomainModule),
|
||||
typeof(AbpPermissionManagementDomainIdentityServerModule),
|
||||
```
|
||||
|
||||
with
|
||||
|
||||
```csharp
|
||||
using Volo.Abp.OpenIddict;
|
||||
using Volo.Abp.PermissionManagement.OpenIddict;
|
||||
...
|
||||
typeof(AbpOpenIddictDomainModule),
|
||||
typeof(AbpPermissionManagementDomainOpenIddictModule),
|
||||
```
|
||||
|
||||
#### OpenIddictDataSeedContributor
|
||||
|
||||
- Create a folder named *OpenIddict* under the Domain project and copy the [OpenIddictDataSeedContributor.cs](https://github.com/abpframework/abp-samples/blob/master/Ids2OpenId/src/Ids2OpenId.Domain/OpenIddict/OpenIddictDataSeedContributor.cs) under this folder. Rename all the `Ids2OpenId` with your project name.
|
||||
- Delete *IdentityServer* folder that contains `IdentityServerDataSeedContributor.cs` which is no longer needed.
|
||||
|
||||
### EntityFrameworkCore Layer
|
||||
|
||||
If you are using MongoDB, skip this step and check the *MongoDB* layer section.
|
||||
|
||||
- In **MyApplication.EntityFrameworkCore.csproj** replace **project reference**:
|
||||
|
||||
```csharp
|
||||
<PackageReference Include="Volo.Abp.IdentityServer.EntityFrameworkCore" Version="6.0.0-rc.1" />
|
||||
```
|
||||
|
||||
with
|
||||
|
||||
```csharp
|
||||
<PackageReference Include="Volo.Abp.OpenIddict.EntityFrameworkCore" Version="6.0.0-rc.1" />
|
||||
```
|
||||
|
||||
- In **MyApplicationEntityFrameworkCoreModule.cs** replace usings and **module dependencies**:
|
||||
|
||||
```csharp
|
||||
using Volo.Abp.IdentityServer.EntityFrameworkCore;
|
||||
...
|
||||
typeof(AbpIdentityServerEntityFrameworkCoreModule),
|
||||
```
|
||||
|
||||
with
|
||||
|
||||
```csharp
|
||||
using Volo.Abp.OpenIddict.EntityFrameworkCore;
|
||||
...
|
||||
typeof(AbpOpenIddictEntityFrameworkCoreModule),
|
||||
```
|
||||
|
||||
- In **MyApplicationDbContext.cs** replace usings and **fluent api configurations**:
|
||||
|
||||
```csharp
|
||||
using Volo.Abp.IdentityServer.EntityFrameworkCore;
|
||||
...
|
||||
using Volo.Abp.OpenIddict.EntityFrameworkCore;
|
||||
...
|
||||
protected override void OnModelCreating(ModelBuilder builder)
|
||||
{
|
||||
base.OnModelCreating(builder);
|
||||
|
||||
/* Include modules to your migration db context */
|
||||
|
||||
...
|
||||
builder.ConfigureIdentityServer();
|
||||
```
|
||||
|
||||
with
|
||||
|
||||
```csharp
|
||||
using Volo.Abp.OpenIddict.EntityFrameworkCore;
|
||||
...
|
||||
protected override void OnModelCreating(ModelBuilder builder)
|
||||
{
|
||||
base.OnModelCreating(builder);
|
||||
|
||||
/* Include modules to your migration db context */
|
||||
|
||||
...
|
||||
builder.ConfigureOpenIddict();
|
||||
```
|
||||
|
||||
### MongoDB Layer
|
||||
|
||||
If you are using EntityFrameworkCore, skip this step and check the *EntityFrameworkCore* layer section.
|
||||
|
||||
- In **MyApplication.MongoDB.csproj** replace **project reference**:
|
||||
|
||||
```csharp
|
||||
<PackageReference Include="Volo.Abp.IdentityServer.MongoDB" Version="6.0.0-rc.1" />
|
||||
```
|
||||
|
||||
with
|
||||
|
||||
```csharp
|
||||
<PackageReference Include="Volo.Abp.OpenIddict.MongoDB" Version="6.0.0-rc.1" />
|
||||
```
|
||||
|
||||
- In **MyApplicationMongoDbModule.cs** replace usings and **module dependencies**:
|
||||
|
||||
```csharp
|
||||
using Volo.Abp.IdentityServer.MongoDB;
|
||||
...
|
||||
typeof(AbpIdentityServerMongoDbModule),
|
||||
```
|
||||
|
||||
with
|
||||
|
||||
```csharp
|
||||
using Volo.Abp.OpenIddict.MongoDB;
|
||||
...
|
||||
typeof(AbpOpenIddictMongoDbModule),
|
||||
```
|
||||
|
||||
### DbMigrator Project
|
||||
|
||||
- In **MyApplication.DbMigrator.csproj** **add project reference**:
|
||||
|
||||
```csharp
|
||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.1" />
|
||||
```
|
||||
|
||||
for creating the host builder.
|
||||
|
||||
- In `appsettings.json` **replace IdentityServer section with OpenIddict:**
|
||||
|
||||
```json
|
||||
"OpenIddict": {
|
||||
"Applications": {
|
||||
"MyApplication_Web": {
|
||||
"ClientId": "MyApplication_Web",
|
||||
"ClientSecret": "1q2w3e*",
|
||||
"RootUrl": "https://localhost:44384"
|
||||
},
|
||||
"MyApplication_App": {
|
||||
"ClientId": "MyApplication_App",
|
||||
"RootUrl": "http://localhost:4200"
|
||||
},
|
||||
"MyApplication_BlazorServerTiered": {
|
||||
"ClientId": "MyApplication_BlazorServerTiered",
|
||||
"ClientSecret": "1q2w3e*",
|
||||
"RootUrl": "https://localhost:44346"
|
||||
},
|
||||
"MyApplication_Swagger": {
|
||||
"ClientId": "MyApplication_Swagger",
|
||||
"RootUrl": "https://localhost:44391"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Replace **MyApplication** with your application name.
|
||||
|
||||
### UI Layer
|
||||
|
||||
- [Angular UI Migration](OpenIddict-Angular.md)
|
||||
- [MVC/Razor UI Migration](OpenIddict-Mvc.md)
|
||||
- [Blazor-Server UI Migration](OpenIddict-Blazor-Server.md)
|
||||
- [Blazor-Wasm UI Migration](OpenIddict-Blazor.md)
|
||||
|
||||
## Source code of samples and module
|
||||
|
||||
* [Open source tiered & separate auth server application migrate Identity Server to OpenIddct](https://github.com/abpframework/abp-samples/tree/master/Ids2OpenId)
|
||||
* [OpenIddict module document](https://docs.abp.io/en/abp/6.0/Modules/OpenIddict)
|
||||
* [OpenIddict module source code](https://github.com/abpframework/abp/tree/rel-6.0/modules/openiddict)
|
||||
|
||||
## See Also
|
||||
|
||||
* [ABP Version 6.0 Migration Guide](Abp-6_0.md)
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue