/JPProject.IdentityServer4.AdminUI

:wrench: ASP.NET Core 3 & Angular 8 Administration Panel for :revolving_hearts:IdentityServer4 and ASP.NET Core Identity

Primary LanguageHTMLMIT LicenseMIT

image

Build Status License

This is an Administrator Panel for IdentityServer4. It's available in 2 versions: Light and Full. See below the differences.

Several break changes

The new version, written in ASP.NET Core 3.0, changed a lot. So before upgrade read differences between light and full version. If have the past version, don't worry. It's the same project at all. But splited repo's.

Installation

If you know the differences between Light and Full. Check the installation instructions below. If wanna understand, check more here atPresentation section.

Full Install

Go to this repo and follow instructions there.

Light Install

You will need to create a Client and API resources in your IdentityServer4. At the end of this section there are some shortcuts.

  1. Download/Clone or Fork this repository.
  2. Open environment.ts and change settings for you SSO.
    export const environment = {
        production: false,
        IssuerUri:  "http://localhost:5000",
        ResourceServer: "http://localhost:5002/",
        RequireHttps: false,
        Uri: "http://localhost:4300",
        defaultTheme: "E",
        version: "3.0.0"
    };
    
    For more details check angular-oauth2-oidc
  3. Open docker-compose.yml and change Api Settings:
    # #############################
    # # Management API - Light
    # #############################
    jpproject-light-api:
        image: jpproject-light-api
        build: 
          context: .
          dockerfile: api-light.dockerfile
        environment: 
            ASPNETCORE_ENVIRONMENT: "Development"
            CUSTOMCONNSTR_SSOConnection: "<you database connstring>"
            ApplicationSettings:Authority: "<you sso uri>"
            ApplicationSettings:DatabaseType: SqlServer # Choose one: SqlServer | MySql | Postgre | Sqlite
            ApplicationSettings:RequireHttpsMetadata: 'false'
            ApplicationSettings:ApiName: "<api name>"
            ApplicationSettings:ApiSecret: "<your api secret>"
    
  4. Build compose by: docker-compose up

Shortcuts:

You must have these 2 configurations at you IdentityServer4

Client configuration

    /*
    * JP Project ID4 Admin Client
    */
    new Client
    {

        ClientId = "IS4-Admin",
        ClientName = "IS4-Admin",
        ClientUri = "http://localhost:4300",
        AllowedGrantTypes = GrantTypes.Code,
        AllowAccessTokensViaBrowser = false,
        RequireConsent = true,
        RequirePkce = true,
        AllowPlainTextPkce = false,
        RequireClientSecret = false,
        RedirectUris = new[] {
            "http://localhost:4300/login-callback",
            "http://localhost:4300/silent-refresh.html"
        },
        AllowedCorsOrigins = { "http://localhost:4300" },
        LogoUri = "https://jpproject.azurewebsites.net/sso/images/brand/logo.png",
        PostLogoutRedirectUris = {"http://localhost:4300",},
        AllowedScopes =
        {
            IdentityServerConstants.StandardScopes.OpenId,
            IdentityServerConstants.StandardScopes.Profile,
            IdentityServerConstants.StandardScopes.Email,
            "jp_api.is4",
            "role"
        }
    },

Api resource configuration

    new ApiResource
    {
        Name = "jp_api",
        DisplayName = "JP API",
        Description = "OAuth2 Server Management Api",
        ApiSecrets = { new Secret(":}sFUz}Pjc]K4yiW>vDjM,+:tq=U989dxw=Vy*ViKrP+bjNbWC3B3&kE23Z=%#Jr".Sha256()) },

        UserClaims =
        {
            IdentityServerConstants.StandardScopes.OpenId,
            IdentityServerConstants.StandardScopes.Profile,
            IdentityServerConstants.StandardScopes.Email,
            "is4-rights",
            "username",
            "roles"
        },

        Scopes =
        {
            new Scope()
            {
                Name = "jp_api.is4",
                DisplayName = "OAuth2 Server",
                Description = "Manage mode to IS4",
                Required = true
            }
        }
    }

Identity Resource:

    new IdentityResource("role", new List<string>(){"roles"}),

Table of Contents


Presentation

JP Project Admin Panel is an administrative panel for IdentityServer4. You can manage Clients, Api Resources, Identity Resources and so on. There are 2 versions.

Full

The full version is for those who don't have an IdentityServer up and running. So you can download the JP Project SSO and with this admin panel you will be able to manage Users and IdentityServer4.

Go to this repo instead

Light version

For those who already have an IdentityServer4. This panel has features to manage an existing IdentityServer4 database.

Here some screenshots

Admin UI

Demo

Check our full demo online.

We are online

Check it now at Admin Panel.

You can check also SSO and Profile Manager

New users are readonly

Technologies

Check below how it was developed.

Written in ASP.NET Core and Angular 8. The main goal of project is to be a Management Ecosystem for IdentityServer4. Helping Startup's and Organization to Speed Up the Setup of User Management. Helping teams and entrepreneurs to achieve the company's primary purpose: Maximize shareholder value.

  • Angular 8
  • Rich UI interface
  • ASP.NET Core 3.0
  • ASP.NET WebApi Core
  • MySql Ready
  • Sql Ready
  • Postgree Ready
  • SQLite Ready
  • Entity Framework Core
  • .NET Core Native DI
  • AutoMapper
  • FluentValidator
  • MediatR
  • Swagger UI
  • High customizable
  • Translation for 7 different languages

Architecture

  • Architecture with responsibility separation concerns, SOLID and Clean Code
  • Domain Driven Design (Layers and Domain Model Pattern)
  • Domain Events
  • Domain Notification
  • CQRS (Imediate Consistency)
  • Event Sourcing
  • Unit of Work
  • Repository and Generic Repository

Give a Star! ⭐

Do you love it? give us a Star!

How to build

Jp Project is built against ASP.NET Core 3.0.

  • Install the latest .NET Core 2.2 SDK

src/JpProject.AdminUi.sln Contains the API

For UI's use VSCode.

  • AdminUI -> Inside VSCode open folder rootFolder/src/Frontend/Jp.AdminUI, then terminal and npm install && npm start

Wait for ng to complete his proccess then go to http://localhost:4300!

Any doubts? Go to docs

Docs

Wanna start? please Read the docs

Contributors

Thank you all!

Contributing

We'll love it! Please Read the docs

Free

If you need help building or running your Jp Project platform There are several ways we can help you out.

3.0.2

  1. Menu translation
  2. Email support for full version
  3. Email configuration settings (SMTP / Password) for full version

3.0.1

  1. ASP.NET Core 3.0 support
  2. Separated repositories, for better management. Improving tests, integration tests. And to support more scenarios.

v1.4.5

Breaking change: Argon2 password hashing. Be careful before update. If you are using the old version all users must need to update their passwords.

  1. Bug fixes:
    1. Tooltip for admin-ui
  2. Argon2 Password Hasher
  3. Show version at footer

Check Changelog.md for a complete list of changes.

What comes next?

  • Code coverage
  • UI for Device codes
  • CI with SonarCloud
  • E-mail template management
  • Blob service management

License

Jp Project is Open Source software and is released under the MIT license. This license allow the use of Jp Project in free and commercial applications and libraries without restrictions.