<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Devprime | Documentação – Auth0</title>
    <link>https://docs.Devprime.io/pt-br/examples/security/auth0/</link>
    <description>Recent content in Auth0 on Devprime | Documentação</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    
	  <atom:link href="https://docs.Devprime.io/pt-br/examples/security/auth0/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Examples: Introdução</title>
      <link>https://docs.Devprime.io/pt-br/examples/security/auth0/introduction/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.Devprime.io/pt-br/examples/security/auth0/introduction/</guid>
      <description>
        
        
        &lt;p&gt;O Auth0 é uma plataforma para gestão de identidade com suporte a segurança em aplicativos e microsserviços em processos de single sign-on with Identity, Access Management oferecendo autenticação e autorização integrados a plataforma Devprime. Essa integração é feita pelo adapter de Security.&lt;/p&gt;
&lt;p&gt;Siga os passos abaixo para preparar o ambiente local e efeturar as cofigurações básicas no Auth0 para habilitar os testes de integração local com o mecanismo de segurança.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cheklist e preperação do ambiente inicial:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Abra uma conta na &lt;a href=&#34;https://devprime.io&#34;&gt;plataforma Devprime&lt;/a&gt; e adquira uma &lt;a href=&#34;https://devprime.io/pricing&#34;&gt;licença (Developer/Enterprise)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Instale uma versão atualizada do .NET (Linux, macOS e Windows)&lt;/li&gt;
&lt;li&gt;Instale e/ou atualize o Visual Studio Code e/ou o Visual Studio 2023 Community / Professional / Enterprise.&lt;/li&gt;
&lt;li&gt;Instale e/ou atualize o Docker (Para Windows, utilize o WSL2).&lt;/li&gt;
&lt;li&gt;Inicialize os containers do &lt;a href=&#34;../../../quick-start/docker/&#34;&gt;MongoDB e RabbitMQ no Docker&lt;/a&gt; e &lt;a href=&#34;../docker/using-rabbitmq/&#34;&gt;adicione a fila &amp;lsquo;orderevents&amp;rsquo; no RabbitMQ&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Instale e ative a versão mais nova do &lt;a href=&#34;../../../quick-start/install-devprime-cli/&#34;&gt;Devprime CLI&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Crie uma pasta para os seus projetos e defina as permissões de leitura e gravação.&lt;/li&gt;
&lt;li&gt;Consulte o artigo &amp;ldquo;&lt;a href=&#34;../../../quick-start/creating-the-first-microservice/&#34;&gt;Criando o primeiro microsserviço&lt;/a&gt;&amp;rdquo; para explorar os primeiros passos na plataforma Devprime.&lt;/li&gt;
&lt;li&gt;Crie uma conta de Host no &lt;a href=&#34;https://auth0.com&#34;&gt;Auth0.com&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;criando-um-application-no-auth0&#34;&gt;Criando um Application no Auth0&lt;/h3&gt;
&lt;p&gt;Após a criação da conta no Auth0 você será direcionado para uma area privada dentro do portal com diversas opções para configuração. A primeira opção a a ser localizada é o menu &amp;ldquo;Applications&amp;rdquo; e depois a opção &amp;ldquo;Create application&amp;rdquo; devendo fornecer um no qualquer como &amp;ldquo;ms-order&amp;rdquo; e o tipo como &amp;ldquo;Regular Web Applications&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.Devprime.io/images/examples/security/auth0/devprime-create-first-application-security-with-auth0.png&#34; alt=&#34;Welcome to auth0&#34;&gt;&lt;/p&gt;
&lt;p&gt;Ao final uma nova &amp;ldquo;Application&amp;rdquo; será criada e nós realizaremos algumas configurações e depois utilizaremos os dados no microsserviço local para validarmos a autenticação.&lt;/p&gt;
&lt;h3 id=&#34;obtendo-as-configurações-de-um-application-no-auth0&#34;&gt;Obtendo as configurações de um Application no Auth0&lt;/h3&gt;
&lt;p&gt;Agora chegou o momento de obter as informações de configuração do Auth0 para uso em nossa aplicação e para isso é necessário acessar o &amp;ldquo;Application &amp;gt; ms-order&amp;rdquo; e na opção&lt;br&gt;
&amp;ldquo;Basic Information&amp;rdquo; obter os valores do &amp;ldquo;Domain, Client ID, Client Secret&amp;rdquo;&lt;br&gt;
&lt;img src=&#34;https://docs.Devprime.io/images/examples/security/auth0/devprime-create-first-application-security-with-auth0-application.png&#34; alt=&#34;Welcome to auth0&#34;&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&#34;text-align:left&#34;&gt;Item&lt;/th&gt;
&lt;th style=&#34;text-align:left&#34;&gt;Valor&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Domain&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;dev-q5z4w4ipzhz581g3.us.auth0.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Client ID&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;a15W9T9UzEA05hcRMM3x4ckfiEzD6CJo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Client Secret&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;-hQtloE4YIF4oJD5cbhDrSVjbZ5IlF-x-UPgeTUZLZArxTRcyHwff6eu5b4IpkHZ&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Depois localize &amp;ldquo;Application URIs&amp;rdquo; localize as chaves Allowed Call Backurl, Allowed Logout Backurl e Allowed Web Origins e inclua os valores apresentados na tabela&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&#34;text-align:left&#34;&gt;Item&lt;/th&gt;
&lt;th style=&#34;text-align:left&#34;&gt;Valor&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Allowed Call Backurl&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;https://localhost:5001/callback,http://localhost:5000/callback&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Allowed Logout Backurl&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;https://localhost:5001, http://localhost:5000, https://localhost:5001/home/index, http://localhost:5000/home/index&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Allowed Web Origins&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;http://*, https://*&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.Devprime.io/images/examples/security/auth0/devprime-create-first-application-security-with-auth0-application-uri.png&#34; alt=&#34;Welcome to auth0&#34;&gt;&lt;/p&gt;
&lt;p&gt;No mesmo formulário você vai encontrar a opção &amp;ldquo;Cross-Origin Authentication&amp;rdquo;&lt;br&gt;
que também pode ser preenchida com os valores &amp;ldquo;http://*, https://*&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Esse é o momento importante que precisa salvar as configurações realizadas no &lt;br&gt;
Auth0.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Próximos passos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../security-in-microservices-and-web/&#34;&gt;Aplicando segurança na Web&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../security-in-microservices-and-apis/&#34;&gt;Aplicando segurança nas API&amp;rsquo;s&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Examples: Aplicando segurança na Web</title>
      <link>https://docs.Devprime.io/pt-br/examples/security/auth0/security-in-microservices-and-web/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.Devprime.io/pt-br/examples/security/auth0/security-in-microservices-and-web/</guid>
      <description>
        
        
        &lt;p&gt;Durante esse cenário nós utilizaremos o adapter de security do Devprime stack para ativar as configurações de segurança para quando houver uma solicitação de acesso ser requerido a autenticação do usuário em uma base centralizada do Keycloak.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cheklist e preperação do ambiente inicial:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Abra uma conta na &lt;a href=&#34;https://devprime.io&#34;&gt;plataforma Devprime&lt;/a&gt; e adquira uma &lt;a href=&#34;https://devprime.io/pricing&#34;&gt;licença (Developer/Enterprise)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Instale uma versão atualizada do .NET (Linux, macOS e Windows)&lt;/li&gt;
&lt;li&gt;Instale e/ou atualize o Visual Studio Code e/ou o Visual Studio 2023 Community / Professional / Enterprise.&lt;/li&gt;
&lt;li&gt;Instale e/ou atualize o Docker (Para Windows, utilize o WSL2).&lt;/li&gt;
&lt;li&gt;Inicialize os containers do &lt;a href=&#34;../../../quick-start/docker/&#34;&gt;MongoDB e RabbitMQ no Docker&lt;/a&gt; e &lt;a href=&#34;../docker/using-rabbitmq/&#34;&gt;adicione a fila &amp;lsquo;orderevents&amp;rsquo; no RabbitMQ&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Instale e ative a versão mais nova do &lt;a href=&#34;../../../quick-start/install-devprime-cli/&#34;&gt;Devprime CLI&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Crie uma pasta para os seus projetos e defina as permissões de leitura e gravação.&lt;/li&gt;
&lt;li&gt;Consulte o artigo &amp;ldquo;&lt;a href=&#34;../../../quick-start/creating-the-first-microservice/&#34;&gt;Criando o primeiro microsserviço&lt;/a&gt;&amp;rdquo; para explorar os primeiros passos na plataforma Devprime.&lt;/li&gt;
&lt;li&gt;Crie uma conta de Host no &lt;a href=&#34;https://auth0.com&#34;&gt;Auth0.com&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;criando-um-microserviço-para-utilizar-no-exemplo&#34;&gt;Criando um microserviço para utilizar no exemplo&lt;/h3&gt;
&lt;p&gt;O primeiro passo é criar um novo microsserviço para que possamos utilizar como modelo para publicar no host. O nome deste microsserviço será definido como &amp;ldquo;ms-order&amp;rdquo;, conforme demonstrado no comando abaixo.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Criando o primeiro microsserviço&lt;br&gt;
&lt;code&gt;dp new ms-order --stream rabbitmq --state mongodb&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Adicionando uma regra de negócio de exemplo &amp;ldquo;Order&amp;rdquo;&lt;br&gt;
&lt;code&gt;dp marketplace order&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Inicializando e acelerando implementações do microsserviço&lt;br&gt;
&lt;code&gt;dp init&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Após a criação do novo microsserviço entre na pasta do projeto &amp;ldquo;ms-order&amp;rdquo; e já poderá visualizar todas as implementações pelo Visual Studio Code conforme demonstrado no artigo relacionado a &lt;a href=&#34;../../../quick-start/creating-the-first-microservice/&#34;&gt;criação do primeiro microsserviço&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Após a conclusão é possivel executar o microsserviço. Depois finalize.&lt;br&gt;
&lt;code&gt;.\run.ps1 ou ./run.sh (Linux, macOS)&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;aplicando-configurações-do-keycloak-no-microsserviço&#34;&gt;Aplicando configurações do Keycloak no microsserviço&lt;/h3&gt;
&lt;p&gt;As configurações de segurança na plataforma Devprime são aplicadas no Adapter de Security que no ambiente local fica no arquivo &amp;ldquo;src/App/appsettings.json&amp;rdquo; e nesse momento nós aplicaremos&lt;br&gt;
os mesmos dados obitidos no portal ao Auth0.&lt;/p&gt;
&lt;p&gt;Utilize os valores Domain, ClientId, ClientSecret obtidos em sua configuração no portal&lt;br&gt;
do Auth0. Nesse cenário utilizaremos o EnableOIDC.&lt;/p&gt;
&lt;p&gt;Apra pelo pelo Visual Studio Code:&lt;br&gt;
&lt;code&gt;code src/App/appsettings.json&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DevPrime_Security&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Enable&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;true&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Identity&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Enable&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;true&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;auth0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Domain&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://dev-q5z4w4ipzhz581g3.us.auth0.com&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ClientId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;a15W9T9UzEA05hcRMM3x4ckfiEzD6CJo&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ClientSecret&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;-hQtloE4YIF4oJD5cbhDrSVjbZ5IlF-x-UPgeTUZLZArxTRcyHwff6eu5b4IpkHZ&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;EnableOIDC&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;true&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;AuthenticationScheme&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Auth0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;LogoutUri&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://localhost:5001&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Scopes&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;openid;email&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;criando-um-interface-web-para-utilizar-no-exemplo&#34;&gt;Criando um interface web para utilizar no exemplo&lt;/h3&gt;
&lt;p&gt;Adicionando template Web para utilização na demonstração. Esse procedimento criará algumas páginas web para utilizarmos na demonstração. &lt;br&gt;
&lt;code&gt;dp add web login&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Após executar teremos um novo endpoint chamado &amp;ldquo;/private&amp;rdquo; que já traz o atributo &amp;ldquo;Authorize&amp;rdquo; necessário para indicar que aquela url requer uma autenticação. O trecho do arquivo abaixo &amp;ldquo;src/Adapters/Web/Pages/Account.cs&amp;rdquo; demontra esse cenário&lt;br&gt;
com as urls /private, /login e /logout.&lt;/p&gt;
&lt;p&gt;Para visualizar pelo Visual Studio Code:&lt;br&gt;
&lt;code&gt;code src/Adapters/Web/Pages/Account.cs&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;17
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;18
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;19
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;20
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;21
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;22
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;23
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;24
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;25
&lt;/span&gt;&lt;span style=&#34;white-space:pre;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;26
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-cs&#34; data-lang=&#34;cs&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;override&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; Endpoints(WebApplication app)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        app.MapGet(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/private&amp;#34;&lt;/span&gt;, [Authorize]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        (ClaimsPrincipal user) =&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            StringBuilder sb = &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; StringBuilder();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;foreach&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; claim &lt;span style=&#34;color:#66d9ef&#34;&gt;in&lt;/span&gt; user.Claims)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                sb.Append(&lt;span style=&#34;color:#e6db74&#34;&gt;$&amp;#34;{claim.Type}={claim.Value}{System.Environment.NewLine}&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; sb.ToString();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        });
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        app.MapGet(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/login&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;async&lt;/span&gt; (HttpContext http, &lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt; returnUrl) =&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;.IsNullOrWhiteSpace(returnUrl))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                returnUrl = &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;await&lt;/span&gt; http.ChallengeAsync(SecurityConfig.Identity.AuthenticationScheme, &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; AuthenticationProperties()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            {RedirectUri = returnUrl});
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        });
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        app.MapGet(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/logout&amp;#34;&lt;/span&gt;, [Authorize]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;async&lt;/span&gt; (HttpContext http) =&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;await&lt;/span&gt; http.SignOutAsync(SecurityConfig.Identity.AuthenticationScheme, &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; AuthenticationProperties{RedirectUri = &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/&amp;#34;&lt;/span&gt;});
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;await&lt;/span&gt; http.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        });
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Execute a aplicação e abra &lt;a href=&#34;https://localhost:5001&#34;&gt;https://localhost:5001&lt;/a&gt; para visualizar os novos links adicionados.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Próximos passos:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../introduction/&#34;&gt;Introdução ao Keycloak&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../security-in-microservices-and-apis/&#34;&gt;Aplicando segurança nas API&amp;rsquo;s&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../using-curl-to-access-protected-api/&#34;&gt;Utilizando curl para acessar API protegida&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Você protegeu uma aplicação web utilizando o Keycloak e um microsserviço utilizando a plataforma Devprime. Parabéns🚀🚀🚀&lt;/p&gt;

      </description>
    </item>
    
  </channel>
</rss>
