This is a backend WebAPI solution written in .NET / C# following the clean architecture principles.
The API layer that consumes services provided by Altinn.Profile.Core
Relevant implementations:
- Controllers
- Program.cs
The domain and application layer that implements the business logic of the system.
Relevant implementations:
- Interfaces for external dependencies implemented by infrastructure and repository layer
- Domain models
- Services
The infrastructure layer that implements the interfaces defined in Altinn.Profile.Core for integrations towards 3rd-party libraries and systems.
Relevant implementations:
- Clients for communicating with SBL Bridge in Altinn 2
- Database for KRR-data
- Client for communicating with KRR to update the local DB
These instructions will get you a copy of the profile component up and running on your machine for development and testing purposes.
- .NET 9.0 SDK
- Newest Git
- A code editor - we like Visual Studio Code
- Also install recommended extensions (e.g. C#)
- Podman or another container tool such as Docker Desktop
- PostgreSQL
- pgAdmin
Ensure that both PostgreSQL and pgAdmin have been installed and start pgAdmin.
In pgAdmin
- Create database profiledb
- Create the following users with password: Password (see privileges in parentheses)
- platform_profile_admin (superuser, canlogin)
- platform_profile (canlogin)
A more detailed description of the database setup is available in our developer handbook
Clone Altinn Profile repo and navigate to the folder.
git clone https://github.com/Altinn/altinn-profile
cd altinn-profile
- Start Altinn Profile docker container by running the command
podman compose up -d --build
- To stop the container running Altinn Profile run the command
podman stop altinn-platform-profile
The Profile components can be run locally when developing/debugging. Follow the install steps above if this has not already been done.
- Navigate to _src/Altinn.Profile, and build and run the code from there, or run the solution using you selected code editor
cd src/Altinn.Profile
dotnet run
The profile solution is now available locally at http://localhost:5030/. To access swagger use http://localhost:5030/swagger.
- Set up required user secrets for Maskinporten integration in the ASP.NET Core Secret Manager, e.g. via CLI by running the following commands from
src/Altinn.Profile
dotnet user-secrets set "ContactAndReservationSettings:MaskinportenSettings:ClientId" "{SECRET_GOES_HERE}"
dotnet user-secrets set "ContactAndReservationSettings:MaskinportenSettings:EncodedJwk" "{SECRET_GOES_HERE}"
- Run the application, and send the following request (e.g. using Postman) to initiate the synchronization job:
GET http://localhost:5030/profile/api/v1/trigger/syncpersonchanges
- Code the desired classes and add them to the DB context
- Run the following command in a terminal from src/Altinn.Profile.Integrations to add a migration. The name should be more descriptive than AddNewMigration:
dotnet ef migrations Add AddNewMigration --startup-project ../Altinn.Profile
- To generate SQL scripts, run
dotnet ef migrations script --startup-project ../Altinn.Profile
If you want to remove the migration run dotnet ef migrations remove --startup-project ../Altinn.Profile
Read more about applying migrations here.
In order to run the requests with active access tokens, you need to add the secrets for the token generator tool. This should be added in a .env
file. An example is added to the folder.