Páginas filhas
  • TOTVS Console - Authorization Server - Persistência Identity Server 4

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Migration of unmigrated content due to installation of a new plugin
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. 

  

Informações Gerais

Especificação

Produto

FRAMEWORK

Módulo

 

Segmento Executor

 

Projeto1

TOTVS Console - Fase 1

IRM1

FRW_FRW003-1

Requisito1

FRW_FRW003-3

Subtarefa1

FRW_FRW003-21

Chamado2

 

País

( X ) Brasil  (  ) Argentina  (  ) Mexico  (  ) Chile  (  ) Paraguai  (  ) Equador

(  ) USA  (  ) Colombia   (  ) Outro _____________.

Outros

Documentação do Identity Server 4

<Caso necessário informe outras referências que sejam pertinentes a esta especificação. Exemplo: links de outros documentos ou subtarefas relacionadas>.

   Legenda: 1 – Inovação 2 – Manutenção (Os demais campos devem ser preenchidos para ambos os processos). 

Objetivo

 Criar camada de persistência para os dados de Configuração e dados Operacionais do servidor de autorização do TOTVSConsole (Identity Server 4) utilizando o banco MongoDB.

Definição da Regra de Negócio

Conforme, determinado na especificação OAuth 2.0, um STS necessita de alguns dados de Configuração (Clients e Scopes) e gera dados operacionais (Tokens de Referência, Consentimentos de Autorização).

Para fins de desenvolvimento e testes, o Identity Server 4, fornece mecanismos de armazenamentos dessas informações em memória. Em um ambiente de produção, necessitamos criar mecanismos para armazenamento físico destas informações.

A comunidade open source já fornece uma camada de persistência baseada no Entity Framework Core para armazenamento destas informações em bancos de dados SQL Server. Entretanto, como estratégia para disponibilização do TOTVS Console em ambientes multiplataforma, será criada uma camada de pesistência utilizando MongoDB.

O Identity Server 4 disponibiliza contratos para as suas camadas de persistência, assim, as implementações padrões (em memória) podem ser substituídas por implementações específicas através de injeção de dependência.

Esses contratos são:

Bloco de código
languagec#
themeConfluence
firstline1
titleIClientStore
linenumberstrue
namespace IdentityServer4.Stores
{
    /// <summary>
    /// Retrieval of client configuration
    /// </summary>
    public interface IClientStore
    {
        /// <summary>
        /// Finds a client by id
        /// </summary>
        /// <param name="clientId">The client id</param>
        /// <returns>The client</returns>
        Task<Client> FindClientByIdAsync(string clientId);
    }
}
Bloco de código
languagec#
themeConfluence
firstline1
titleIScopeStore
linenumberstrue
namespace IdentityServer4.Stores
{
    /// <summary>
    /// Scope retrieval
    /// </summary>
    public interface IScopeStore
    {
        /// <summary>
        /// Gets all scopes.
        /// </summary>
        /// <returns>List of scopes</returns>
        Task<IEnumerable<Scope>> FindScopesAsync(IEnumerable<string> scopeNames);
        /// <summary>
        /// Gets all defined scopes.
        /// </summary>
        /// <param name="publicOnly">if set to <c>true</c> only public scopes are returned.</param>
        /// <returns></returns>
        Task<IEnumerable<Scope>> GetScopesAsync(bool publicOnly = true);
    }
}
Bloco de código
languagec#
themeConfluence
firstline1
titleIPersistedGrantStore
linenumberstrue
namespace IdentityServer4.Stores
{
    /// <summary>
    /// Store interface for persisting grants.
    /// </summary>
    public interface IPersistedGrantStore
    {
        Task StoreAsync(PersistedGrant grant);
        Task<PersistedGrant> GetAsync(string key);
        Task<IEnumerable<PersistedGrant>> GetAllAsync(string subjectId);
        Task RemoveAsync(string key);
        Task RemoveAllAsync(string subjectId, string clientId);
        Task RemoveAllAsync(string subjectId, string clientId, string type);
    }
}

 

Para que também contribuamos com a evolução deste framework e também fácil reutilização, esta biblioteca será disponibilidada como um projeto open source no GitHub e distribuída via Nuget (Gerenciador de Pacotes .NET).

Projeto no GitHub: https://github.com/diogodamiani/IdentityServer4.MongoDB

Pacote Nuget: https://www.nuget.org/packages/IdentityServer4.MongoDB

 

Opcional

Fluxo do Processo

 

<Nesta etapa incluir representações gráficas que descrevam o problema a ser resolvido e o sistema a ser desenvolvido. Exemplo: Diagrama - Caso de Uso, Diagrama de Atividades, Diagrama de Classes, Diagrama de Entidade e Relacionamento e Diagrama de Sequência>. 

Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.