Histórico da Página
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 | IRM1 | ||
Requisito1 | Subtarefa1 | ||
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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
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. |
---|