Acesso Digital Único da Plataforma de Cidadania Digital (Brasil Cidadão) Roteiro de Integração (SDK)
|
|
- Gabriella Alcântara
- 5 Há anos
- Visualizações:
Transcrição
1 Acesso Digital Único da Plataforma de Cidadania Digital (Brasil Cidadão) Roteiro de Integração (SDK) 1
2 Sumário Contexto...3 Introdução...4 Arquitetura de Serviço e Protocolos...5 OpenID Connect (OIDC)...5 OAUTH2...5 Json Web Token - JWT...6 Headers...6 Payload...6 Signature...6 Código Autorizador...7 Autorização para Recursos protegidos...8 Escopos de Atributos...9 Atributos Disponíveis...9 Níveis de Autenticação...10 Selos de Confiabilidade Cadastral...10 Lançador de Serviços...11 Iniciando a Integração...12 Solicitação de Configuração...12 Parâmetros de integração...12 Métodos e interfaces de integração (Passo-a-Passo para Integrar)...12 URLs importantes...12 Autenticação...13 Resultados Esperados do Acesso ao Serviços de Autenticação...15 Acesso ao Serviço de Cadastro de Pessoas Jurídicas...15 Resultados Esperados do Acesso ao Serviço de Cadastro de Pessoas Jurídicas...17 Acesso ao Serviço de Confiabilidade Cadastral (Selos)...17 Resultados Esperados do Acesso ao Serviço de Confiabilidade Cadastral (Selos)...17 Exemplo de implementação...19 JAVA...19 PHP...29 Sites Úteis...45
3 Contexto O Decreto n 8.936, de 19 de dezembro de 2016, pemititu o inicio do projeto da plataforma de cidadania digital, que contempla diversas diretrizes para a prestação de serviços públicos digitais, das quais fazem parte a convergência autoritativa e a federação dos processos de autenticação dos serviços digitais. Para essa diretriz foi concebido o conceito da Plataforma de Autenticação Digital do Cidadão, o projeto Brasil Cidadão, tendo, como destaque no decreto, o mecanismo de acesso digital único. Dentro deste contexto, podemos destacar as diversas dificuldades com múltiplas contas de acesso sob responsabilidade do cidadão e variados bancos de dados cadastrais, tais como a duplicidade e inconsistência de informações, falta de integração, dados dispersos e diversas formas de autenticação. Problemas enfrentados por cidadãos ao tentar consumir um serviço público digital oferecido pelo governo federal. Analisando essas dificuldades, o, Desenvolvimento e Gestão (MP), em parceria com o Serviço Federal de Processamento de Dados (Serpro), disponibilizou a plataforma central de autenticação digital do cidadão, o Brasil Cidadão. Essa é a nova proposta do Governo federal, para facilitar a identificação e autenticação do cidadão, privilegiando a governança e a convergência autoritativa, e finalmente o controle de acesso unificado. A Plataforma de Cidadania Digital chega para ampliar e simplificar o acesso dos cidadãos brasileiros aos serviços públicos digitais, inclusive por meio de dispositivos móveis. 3
4 Introdução Este documento é o elemento para orientar a integração da Plataforma de Autenticação Digital do Cidadão Brasil Cidadão a qualquer ambiente. A partir de agora, será feita uma revisão sobre a arquitetura de serviço e alguns conceitos utilizados pela Plataforma, além de uma explicação sobre procedimentos administrativos essenciais para autorizar o acesso à Plataforma. Este documento contém as formas de chamadas a operações, parâmetros e métodos de integração, e, por último, os procedimentos para permitir a conectividade entre os ambientes de implantação. 4
5 Arquitetura de Serviço e Protocolos OpenID Connect (OIDC) O Openid Connect é um protocolo baseado no OAuth 2.0 que especifica autorização e autenticação. Define como implementar o gerenciamento de autorizações de acesso, gerenciamento de sessão, fornecimento de informações sobre usuário logado. O OIDC permite executar o logon único dos usuários e apresenta o conceito de um id token: um token de segurança que permite verificar a identidade do usuário e obter informações básicas sobre o usuário. Tem característica de ser interoperável, porque segue o protocolo RestFull e usa o formato de saída de dados: JSON (JavaScript Object Notation). Além disso, o OIDC suporta vários tipos de clientes, como aplicações que utilizam o browser, clientes javascript, aplicações mobile e outros. A Figura 1 ilustra as requisições da autenticação entre cliente e servidor. OAUTH2 OAuth2 é um protocolo aberto para autorização que permite aos clientes obterem acesso a recursos protegidos do servidor em nome do proprietário do recurso. O proprietário pode ser um cliente ou usuário final. Também especifica como um usuário final pode autorizar o acesso de terceiros aos seus recursos do servidor sem precisar compartilhar suas credenciais. Atualmente ele está sendo usado por grandes empresas como Google, Facebook, Microsoft, Twitter, e outros. O protocolo fornece 4 estratégias para concessão de autorização: código de autorização, implícita, credenciais de senha do proprietário do recurso e credenciais do cliente. A estratégia usada no Brasil Cidadão é o código de autorização, que utiliza um token. 5
6 Json Web Token - JWT O JWT define como transmitir objetos JSON de forma segura entre aplicações. Tem a característica de ser um padrão aberto. A manipulação do padrão possui uma assinatura a ser realizada com uma palavra secreta ou uma chave publica/privada. O JWT é composto por 3 elementos: Headers, Payload e Signature, explicados a seguir. Headers São objetos JSON definidos por 2 atributos: tipo do token(typ) e o algorítimo (alg) de encriptação, como SHA256 ou RSA. Exemplo: { "alg": "HS256", "typ": "JWT" Payload Signature São os atributos de uma entidade representada por objetos JSON. Exemplo: { "sub": " ", "name": "John Doe", "admin": true Para criar a assinatura, há necessidade de assinar o header codificado, o payload codificado e informar o secret, palavra secreta definida na aplicação. A assinatura é criada para verificar se quem enviou a requisição é quem realmente diz ser. O resultado é um token (exemplo 1 token gerado). O token é dividido em 3 partes separadas pelo ponto. As três partes equivalem ao hash do header, payload e a signature. eyjhbgcioijiuzi1niisinr5cci6ikpxvcj9(header).eyjzdwiioiixmjm0nty3odkwi iwibmftzsi6ikpvag4grg9liiwiywrtaw4ionrydwv9(payload).tjva95orm7e2c Bab30RMHrHDcEfxjoYZgeFONFh7HgQ(signature) Exemplo 1 token gerado Para acessar recursos protegidos, o cliente deve enviar o token gerado através do atributo Authorization do header da requisição, com a flag Bearer, como abaixo: Authorization:Bearer 6
7 eyjhbgcioijiuzi1niisinr5cci6ikpxvcj9.eyjzdwiioiixmjm0nty 3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95 OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ Código Autorizador A estratégia é autorizar clientes a acessarem informações dos usuários proprietários através de um código identificador (Cliente ID). O cliente deve ser cadastrado no Portal de Gestão do Brasil Cidadão para obter um Cliente ID. Após, o proprietário da informação, ao ser requisitado, deve habilitar esse cliente para ter acesso às suas informações. O cliente está habilitado para obter do servidor os recursos necessários. Essa estratégia é muito utilizada no mercado pois é otimizada para as aplicações server-side, o qual o código fonte não é exposto e a confidencialidade do Cliente ID é mantida. A Figura 2 explica a obtenção de recursos do servidor para um cliente cadastrado. Figura 2 Obtenção de recursos do Servidor para cliente cadastrado No passo A, a aplicação cliente solicita autorização. O usuário realiza a autenticação no Brasil Cidadão, obtêm a autorização e é redirecionado para o cliente, conforme o passo B. Já no passo C, o cliente solicita o Access Token e o ID Token, que são as credenciais para permitir as consultas de recursos por um determinado tempo. As credenciais são geradas no servidor e não podem navegar pelo cliente, para manter a confidencialidade. Após o cliente ser validado e receber o ID Token e Access Token no passo D, ele pode solicitar ao Brasil Cidadão os recursos necessários. A Figura 3 mostra os parâmetros necessários para as requisições da Figura 2. 7
8 Figura 3 Explicação dos parâmetros necessários para requisições presentes na figura 2 Autorização para Recursos protegidos Na plataforma de autenticação, os serviços utilizam informações pessoais relacionadas aos cidadãos, logo, existe a necessidade de vincular recurso informacional ao serviço no processo de habilitação. Quando o cidadão se autentica e acessa algum recurso pela primeira vez, uma solicitação de autorização de uso de dados pessoais é feita. A autorização do uso de dados pessoais permite o funcionamento correto. A figura 4 apresenta a tela em que o cidadão autoriza o uso de recurso protegido (dados pessoais): Figura 4 Autorização de Uso de Dados Pessoais 8
9 Escopos de Atributos São conjuntos de informações fornecidos a quem possui autorização. A figura 5 apresenta tela dos escopos por serviços: Figura 5 exemplos de escopos de atributos. Atributos Disponíveis Existem dois escopos disponibilizados pelo Brasil Cidadão para apresentar os atributos disponíveis: brasil_cidadao (CPF, Nome, , telefone, foto); brasil_cidadao_empresa (CNPJ, Nome Fantasia, CPF do Responsável, Nome do Responsável, Atuação no CNPJ). 9
10 Níveis de Autenticação Tem como principal característica ser um recurso de segurança da informação das identidades, que permite flexibilidade para realização do acesso e atribuição de níveis em conformidade com as normas de segurança. São eles: Nível 1 (Auto Cadastro): Identidade cadastrada com conferência simples; Nível 2 (Dados cadastrais convalidados): Identidade cadastrada com convalidação de dados em bases oficiais; Nível 3 (Dados cadastrais Nível Balcão): Identidade certificada a partir da conferência de documentos de forma presencial em posto de atendimento de governo; Nível 4 (Biometria) : Identidade cadastrada com convalidação de dados biométricos; Nível 5 (Cadastro assinado digitalmente): Identidade cadastrada a partir do certificado digital de pessoa física e assinado digitalmente. Selos de Confiabilidade Cadastral Consistem em compor níveis de segurança das contas com a obtenção dos atributos autoritativos do cidadão a partir das bases oficias de governo, por meio das quais permitirão a utilização da credencial de acesso em sistemas internos dos clientes e serviços providos diretamente ao cidadão. Uso possível para o selo é o uso do nível de confiança cadastral pelos serviços para aplicar controle de acesso às funcionalidades mais críticas. Na figura 6, demonstra os selos de confiabilidade cadastral na área cidadão do Brasil Cidadão: Figura 6 selos de confiabilidade cadastral 10
11 Lançador de Serviços O Brasil Cidadão apresenta o conceito de Single Sign On na arquitetura: um ponto único de autenticação, que permite ao usuário fazer o login e acessar diversos serviços ou sistemas integrados. Para permitir isto de forma explicita, o Brasil Cidadão apresenta um funcionalidade chamada Lançador de Serviços. Esta funcionalidade lista todos os serviços ou sistemas integrados autorizados uma vez pelo cidadão. A figura abaixo demonstra o Lançador de Serviços ativo e as configurações são entregues pelos serviços integrados ao Brasil Cidadão. Figura 7 Lançador de Serviços da Área do Cidadão do Brasil Cidadão. 11
12 Iniciando a Integração Solicitação de Configuração Para utilização do sistema Brasil Cidadão, há necessidade de liberar os ambientes para aplicação cliente possa utilizar. Essa liberação ocorre por meio do preenchimento do plano de configuração encaminhado junto com este documento (plano-configuracao-brasil-cidadaovx.doc). O formulário deverá ser encaminhado para os integrantes da Secretaria de Tecnologia da Informação e Comunicação (SETIC) do para realizar configuração da utilização do Brasil Cidadão. Parâmetros de integração Parâmetros de autenticação do serviço consumidor: client_id: chave de acesso, que identifica o serviço consumidor; client_secret: senha de acesso do serviço consumidor. Parâmetros do queries string: response_type: especifica para o provedor o tipo de autorização. Esse tipo de autorização gerará um código para o serviço consumidor. Nesse caso sempre usaremos o code; client_id: o identificador do serviço consumidor fornecido pelo Portal de Gestão. scope: especifica os recursos que o serviço consumidor quer obter. No caso da autenticação é obrigatório concatenar o scope openid para retornar as informações do usuário logado. redirect_uri: a url do serviço consumidor que o provedor de autenticação redirecionará após o login e a autorização; nonce: sequência de caracteres usado para associar uma sessão do serviço consumidor a um Token de ID e para atenuar os ataques de repetição. Pode ser um valor aleatório, mas que não seja de fácil dedução; state: valor usado para manter o estado entre a solicitação e o retorno de chamada. Os parâmetros nonce e state representam variáveis de controle que são utilizadas para autenticidade por parte do Consumidor. Não são obrigatórios o trabalho pelo Consumidor. Métodos e interfaces de integração (Passo-a-Passo para Integrar) URLs importantes URL do Provider: URL de Serviços: 12
13 Autenticação Para que a autenticação aconteça, todo o canal de comunicação deve ser realizado com o protocolo HTTPS. 1. Ao requisitar autenticação via Provedor, o mesmo verifica se o usuário está logado. Caso o usuário não esteja logado o provedor redireciona para a página de login. 2. A requisição é feita através de um GET para o endereço do provider brasil cidadão)/scp/authorize passando as seguintes informações: 1. Parâmetros query: response_type: code; client_id: <CLIENT_ID> fornecido pelo Brasil Cidadão para a aplicação cadastrada; scope: um ou mais escopos inseridos para a aplicação cadastrada. Se for mais de um, esta informação deve vir separada pelo caractere +. redirect_uri: <URI de retorno cadastrada para a aplicação cliente>. nonce: <sequência alfa numérica aleatória>. state: <sequência alfa numérica aleatória>. Item não obrigatório. Exemplo de requisição: do provider brasil cidadão)/scp/authorize?response_type=code&client_id=ec4318d6- f797-4d65-b4f7-39a33bf4d544&scope=openid+brasil_cidadao& redirect_uri= ce6728b 3. Após autenticado, o provedor redireciona para a página de autorização. O usuário habilitará o consumidor no sistema para os escopos solicitados. Caso o usuário da solicitação autorize o acesso ao recurso protegido, é gerado um ticket de acesso intitulado access_token (vide especificação OAUTH 2.0); 4. Após a autorização, a requisição é retornada para a URL especificada no passo 1, enviando os seguintes parâmetros: code=z85qv1e state=358578ce6728b. Lembrando que para essa requisição o code têm um tempo de expiração e só pode ser utilizado uma única vez; 5. Para obter o token e o access_token, o consumidor deve fazer uma requisição POST para o endereço do provider brasil cidadão)/scp/token passando as seguintes informações: 1. No header : Content-Type: tipo do conteúdo da requisição que está sendo enviada. Nesse caso estamos enviando como um formulário; Authorization: Informação codificada na Base64, no seguinte formato: CLIENT_ID:CLIENT_SECRET (utilizar a página para gerar codificação). A palavra Basic deve 13
14 está antes da informação. Exemplo de header: Content-Type:application/x-www-form-urlencoded Authorization: Basic ZWM0MzE4ZDYtZjc5Ny00ZDY1LWI0ZjctMzlhMzNiZjRkNTQ0OkFJSDRoa XBfTUJYcVJkWEVQSVJkWkdBX2dRdjdWRWZqYlRFT2NWMHlFQll4aE1i YUJzS0xwSzRzdUVkSU5FcS1kNzlyYWpaZ3I0SGJu VUM2WlRXV1lJOA== 2. E os parâmetros query: grant_type: authorization_code; code: <código retornado pela requisição anterior> (exemplo: Z85qv1); redirect_uri: <URI de retorno cadastrada no Brasil Cidadão> (exemplo: Exemplo de requisição do provider brasil cidadão)/scp/token?grant_type=authorization_code&code=z85qv1& redirect_uri= exemplo: O serviço retornará, em caso de sucesso, a informação, no formato JSON, conforme { "token":"rst5ojbzrn430zqmlgv3iahgsdfjgsjfgjhkjhjuyiiuyu" "access_token":"rst5ojbzrn430zqmlgv3ia" Ou, no caso de falha, a informação, conforme exemplo abaixo: { "error":"invalid_request" 6. De posse das informações de token e access token, a aplicação consumidora já está habilitada para consultar dados de recursos protegidos, que são os escopos de informações. Deve fazer uma requisição GET para o endereço de serviços do brasil cidadão)/usuario/getuserinfo/brasil_cidadao passando as seguintes informações: 14
15 1. No header: Authorization: Bearer <ACCESS_TOKEN> da requisição POST anterior. Exemplo de retorno do barramento de serviços no formato JSON { "cpf":" ", "nome":"henrique PRETORIUM ", " ":"henrique.pretorium@enterprisex.gov.br", telefone : , foto : informacao da foto em formato base 64 com tamanho até 4 MB Resultados Esperados do Acesso ao Serviços de Autenticação Os acessos aos serviços do Brasil Cidadão ocorrem por meio de chamadas de URLs e a resposta são códigos presentes conforme padrão do protocolo http. Estes códigos são: Código 200: Dados acessados e retornados em formato JSON ao usuário, de acordo com o JSON de cada escopo; Código 400: Token recebido por mais de um método; Código 401: Token não encontrado ou inválido, CPF inválido, usuário não existente no sistema, access token inválido; Código 403: Escopo solicitado não autorizado pelo usuário; Código 404: Escopo obrigatório. Acesso ao Serviço de Cadastro de Pessoas Jurídicas O Brasil Cidadão disponibiliza dois serviços para acesso a informações de Pessoa Jurídica. O primeiro apresenta todos os CNPJs cadastrados para um determinado usuário. O segundo, utiliza desse CNPJ para extrair informações cadastradas no Brasil Cidadão para aquela pessoa e empresa. Para acessar o serviço que disponibiliza os CNPJs vinculados a um determinado usuário, é necessário o seguinte: 1. Na requisição de autenticação, adicionar o escopo brasil_cidadao_empresa, conforme exemplo: do provider brasil cidadão)/scp/authorize?response_type=code&client_id=ec4318d6- f797-4d65-b4f7-39a33bf4d544&scope=openid+brasil_cidadao+brasil_cidadao_empresa& redirect_uri= ce6728b 15
16 2. Com o usuário autenticado, a aplicação deverá realizar uma requisição por meio do método GET a URL URL: de serviços do brasil cidadão)/servicosecidadao/ecidadao/usuario/getconfiabilidade enviando as seguintes informações: No Header: Authorization : Bearer <ACCESS_TOKEN> ; 3. O resultado em formato JSON são selos de confiabilidade da autenticação. O delo a ser verificado será o Representante Legal do CNPJ, conforme o exemplo abaixo: { "id": 0, "nivel": 11, "descricao": "REPRESENTANTE E-CNPJ" 4. Com o usuário autenticado, a aplicação deverá realizar uma requisição por meio do método GET a URL de serviços do brasil cidadão)/empresa/escopo/<escopo> enviando as seguintes informações: No Header: Authorization : Bearer <ACCESS_TOKEN> ; Parâmetro escopo: o escopo de empresa, por exemplo, brasil_cidadao_empresa 5. O resultado em formato JSON é a lista de CNPJs do CPF autenticado, conforme o exemplo abaixo: { "cnpjs": [ {"cnpj", <CNPJ> nome <NOME FANTASIA DA EMPRESA>, atuacao <ATUAÇÃO DO CPF NO CNPJ INFORMADO tendo o valor SOCIO ou COLABORADOR >, { cnpj, nome, atuacao ], "cpf": "<CPF DO USUÁRIO LOGADO>" 6. Com o usuário autenticado, a aplicação cliente deverá acessar, por meio do método GET, a URL: de serviços do brasil cidadão)/empresa/<cnpj>/escopo/<escopo> enviando as seguintes informações: No header: Authorization: Bearer <ACCESS_TOKEN> 16
17 Parâmetro cnpj: o CNPJ da empresa formatado (sem ponto, barra etc). Parâmetro escopo: o escopo de empresa, por exemplo, brasil_cidadao_empresa 7. O resultado em formato JSON é o detalhamento do CNPJ do CPF autenticado, conforme o exemplo abaixo: { "cnpj":"<cnpj>", "nomefantasia":"<nome FANTASIA>", "atuacao":"<atuacão tendo o valor SOCIO ou COLABORADOR >", "cpfresponsavel":"<cpf DO RESPONSÁVEL>", "nomeresponsavel":"<nome DO RESPONSÁVEL>" Resultados Esperados do Acesso ao Serviço de Cadastro de Pessoas Jurídicas Os acessos aos serviços do Brasil Cidadão ocorrem por meio de chamadas de URLs e a resposta são códigos presentes conforme padrão do protocolo http. Estes códigos são: Código 200: Dados acessados e retornados em formato JSON ao usuário, de acordo com cada escopo; Código 400: Token recebido por mais de um método; Código 401: Token não encontrado ou inválido, CNPJ inválido, usuário não existente no sistema, access token inválido; Código 403: Escopo solicitado não autorizado pelo usuário; Código 404: Escopo obrigatório. Acesso ao Serviço de Confiabilidade Cadastral (Selos) Para acessar o serviço de consulta de empresas é necessário: 1. Com usuário autenticado, deverá acessar, por meio do método GET, a URL: de serviços do brasil cidadão)/servicos-ecidadao/ecidadao/usuario/getconfiabilidade ; No header: Authorization: Bearer <ACCESS_TOKEN> 2. A resposta em caso de sucesso retorna sempre um array de objetos JSON no seguinte formato: {id, nivel, descricao; Resultados Esperados do Acesso ao Serviço de Confiabilidade Cadastral (Selos) Os selos existentes no Brasil Cidadão são: 17
18 {, {, {, {, { {, { "id": 0, "nivel": 2, "descricao": "Institucional" (Servidor Público) "id": 0, "nivel": 1, "descricao": "Conformidade" "id": 0, "nivel": 4, "descricao": "Biometria" "id": 0, "nivel": 5, "descricao": "Certificado Digital" "id": 0, "nivel": 3, "descricao": "Convalidação" (Módulo Balcão) "id": 0, "nivel": 10, "descricao": "DNI" "id": 0, "nivel": 11, "descricao": "REPRESENTANTE E-CNPJ" 18
19 Exemplo de implementação Os exemplos abaixo são exemplos básicos da forma de realizar as requisições para Brasil Cidadão. Cabe ao desenvolvedor realizar a organização e aplicação da segurança necessária na aplicação consumidora. JAVA package teste; import java.io.bufferedreader; import java.io.ioexception; import java.io.inputstreamreader; import java.math.biginteger; import java.net.malformedurlexception; import java.net.url; import java.net.urlencoder; import java.security.securerandom; import java.util.arraylist; import java.util.arrays; import java.util.base64; import java.util.list; import javax.net.ssl.httpsurlconnection; import org.jose4j.json.internal.json_simple.jsonarray; import org.jose4j.json.internal.json_simple.jsonobject; import org.jose4j.json.internal.json_simple.parser.jsonparser; import org.jose4j.jwk.publicjsonwebkey; import org.jose4j.jwt.jwtclaims; import org.jose4j.jwt.consumer.jwtconsumer; import org.jose4j.jwt.consumer.jwtconsumerbuilder; /** * * O presente código tem por objetivo exemplificar de forma minimalista o consumo dos serviços utilizados pelo Brasil Cidadão. * */ public class ExemploServicosBrasilCidadao_manual { 19
20 /** * O processo de autenticação e autorização de recursos ocorre essencialmente em três etapas: * Etapa 1: Chamada do serviço de autorização do Brasil Cidadão; * Etapa 2: Recuperação do Access Token e * Etapa 3: Validação do Access Token por meio da verificação de sua assinatura. * Após concluída essas três etapas, a aplicação cliente terá as informações básicas para conceder acesso de acordo com suas próprias políticas de autorização. * Caso a aplicação cliente necessite de informações adicionais, fica habilitado o acesso à todos os serviços (presentes e futuros) fornecidos pelo Brasil Cidadão por meio do access token. * O presente código exemplifica a chamada aos seguintes serviços: * Serviço 1: getuserinfo - Serviço que recupera informações do usuário direto da Receita Federal; * Serviço 2: getconfiabilidade - Serviço que recupera os selos de confiabilidade atribuidos ao usuário; * Serviço 3: getempresasvinculadas - Serviço que recupera a lista de empresas vinculadas ao usuário; * Serviço 4: getdadosempresa - Serviço que detalha a empresa e o papel do usuário nesta empresa. * * * ******************************************************************************** ***************** * * Informações de uso * * Atribua às variáveis abaixo os valores de acordo com o seu sistema. * */ private static final String URL_PROVIDER = " private static final String URL_SERVICOS = " private static final String REDIRECT_URI = "<coloque-aqui-a-uri>"; //redirecturi informada na chamada do serviço do authorize. private static final List<String> SCOPES = Arrays.asList("openid", "brasil_cidadao", "brasil_cidadao_empresa"); //Escopos cadastrados para a aplicação. private static final String CLIENT_ID = "<coloque-aqui-o-clientid-cadastrado-para-o-seusistema>"; //clientid informado na chamada do serviço do authorize. 20
21 private static final String SECRET = "<coloque-aqui-o-secret-cadastrado-para-o-seusistema>"; //secret de conhecimento apenas do backend da aplicação. public static void main(string[] args) throws Exception { /** * Etapa 1: No Browser, chamar a URL do Authorize para recuperar o code e o state (opcional) conforme o exemplo abaixo: * response_type=code&client_id=<coloque-aqui-o-clientid>&scope=openid+brasil_cidadao+brasil_cidadao_empresa&redirect_uri=<coloque-aqui-a-uri-deredirecionamento>&nonce=<coloque-aqui-um-numero-aleatorio>&state=<coloque-aqui-umnumero-aleatorio> * Descrição dos parametros: * response_type: Sempre "code"; * client_id: Identificador do sistema que usa o Brasil Cidadão. Este identificador é único para cada sistema; * scope: Lista de escopos requisitados pelo sistema. Escopos são agrupamentos de informações cujo acesso deverá * ser autorizado pelo cidadão que acessa o sistema. Cada sistema deverá informar que conjunto de informações (escopos) deseja; * redirect_uri: Uri para qual será feito o redirect após o login do cidadão (usuário). Para Celulares, usamos uma pseudo URI; * nonce: número aleatório; * state: número aleatório (opcional) * * Observação: Sem o escopo "brasil_cidadao_empresa", não será possível utilizar o serviço de recuperação de informações de empresas. */ System.out.println(" Etapa 1 - URL do Serviço Authorize "); System.out.println("Abra um Browser (Chrome ou Firefox), aperte F12. Clique na aba 'Network'."); System.out.println("Cole a URL abaixo no Browser (Chrome ou Firefox) e entre com um usuário cadastrado no Brasil Cidadão"); System.out.println(URL_PROVIDER + "/scp/authorize? response_type=code&client_id=" + CLIENT_ID + "&scope=" + String.join("+", SCOPES) + "&redirect_uri=" + URLEncoder.encode(REDIRECT_URI, "UTF-8") + "&nonce=" + createrandomnumber() + "&state=" + createrandomnumber()); /** * Etapa 2: De posse do code retornado pelo passo 1, chame o serviço para recuperar 21
22 os tokens disponíveis para sua aplicação (Access Token, Id Token e refresh Token (caso necessário)) conforme o exemplo abaixo. */ System.out.println("\n Etapa 2 - Recuperação dos Tokens de Acesso "); System.out.println("Digite abaixo o parâmetro 'code' retornado pelo redirect da etapa 1"); System.out.print("Digite o valor do parâmetro code retornado:"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String code = br.readline(); String tokens = gettokens(code); System.out.println("JSON retornado:"); System.out.println(tokens); JSONParser parser = new JSONParser(); JSONObject tokensjson = (JSONObject) parser.parse(tokens); String accesstoken = (String) tokensjson.get("access_token"); String idtoken = (String) tokensjson.get("id_token"); /** * Etapa 3: De posse do access token, podemos extrair algumas informações acerca do usuário. Aproveitamos também para checar a assinatura e tempo de expiração do token. * Para isso, este exemplo usa a biblioteca Open Source chamada "jose4j" mas qualquer outra biblioteca que implemente a especificação pode ser usada. * * O Access Token fornece as seguintes informações acerca do usuário: * 1- id client da aplicação à qual o usuário se autenticou; * 2- Escopos requeridos pela aplicação autorizados pelo usuário; * 3- CPF do usuário autenticado * 4- Nome completo do usuário cadastrado no Brasil Cidadão. Atenção, este é o nome que foi fornecido pelo usuário no momento do seu cadastro * */ JwtClaims jwtclaims; try { jwtclaims = processtoclaims(accesstoken); catch(exception e) { System.out.println("Access Token inválido!"); 22
23 throw new Exception(e); String idclient = jwtclaims.getstringclaimvalue("azp"); //Client Id List<String> scopes = jwtclaims.getstringlistclaimvalue("scope"); //Escopos autorizados pelo usuário String cpfdousuario = jwtclaims.getsubject(); //CPF do usuário. String nomecompleto = jwtclaims.getstringclaimvalue("name"); //Nome Completo do cadastro feito pelo usuário no Brasil Cidadão. System.out.println("\n Etapa 3 - Informações obtidas do Access Token "); System.out.printf("O usuário %s, CPF %s foi autenticado pelo Brasil Cidadão por meio de %s para usar o sistema %s. Este usuário também autorizou este mesmo sistema à utilizar as informações representadas pelos escopos %s. \n", nomecompleto, cpfdousuario, idclient, String.join(",", scopes) ); /** * Serviço 1: De posse do access token, a aplicação pode chamar o serviço de recuperação de informações do usuário (getuserinfo). * */ String infouserjson = getuserinfo(accesstoken, "brasil_cidadao"); System.out.println("\n Serviço 1 - Informações do usuário obtidas da Receita Federal "); System.out.println("JSON retornado:"); System.out.println(infoUserJson); /** * Serviço 2: De posse do access token, a aplicação pode chamar o serviço para saber quais selos o usuário logado possui. */ String confiabilidadejson = getconfiabilidade(accesstoken); System.out.println("\n Serviço 2 - Informações acerca da confiabilidade do usuário "); System.out.println("JSON retornado:"); System.out.println(confiabilidadeJson); 23
24 List<Long> selonivels = new ArrayList<Long>(); for(object o: (JSONArray) parser.parse(confiabilidadejson)){ if ( o instanceof JSONObject ) { selonivels.add((long) ((JSONObject) o).get("nivel")); if (selonivels.contains(new Long(11))) { //Selo de REPRESENTANTE E-CNPJ /** * Serviço 3: De posse do access token, a aplicação pode chamar o serviço para saber quais empresas se encontram vinculadas ao usuário logado. * */ String empresasjson = getempresasvinculadas(accesstoken, "brasil_cidadao_empresa"); System.out.println("\n Serviço 3 - Empresas vinculadas ao usuário "); System.out.println("JSON retornado:"); System.out.println(empresasJson); /** * Serviço 4: De posse do access token, a aplicação pode chamar o serviço para obter dados de uma empresa específica e o papel do usuário logado nesta empresa. */ JSONObject empresasvinculadasjson = (JSONObject) parser.parse(empresasjson); JSONArray cnpjs = (JSONArray ) empresasvinculadasjson.get("cnpjs"); if (!cnpjs.isempty()) { String dadosempresajson = getdadosempresa(accesstoken, (String) cnpjs.get(0), "brasil_cidadao_empresa"); System.out.printf("\n Serviço 4 - Informações acerca da empresa %s ", cnpjs.get(0)); System.out.println("JSON retornado:"); System.out.println(dadosEmpresaJson); 24
25 private static String gettokens(string code) throws Exception { String retorno = ""; 8"); String redirecturiencodedurl = URLEncoder.encode(REDIRECT_URI, "UTF- URL url = new URL(URL_PROVIDER + "/scp/token? grant_type=authorization_code&code=" + code + "&redirect_uri=" + redirecturiencodedurl); HttpsURLConnection conn = (HttpsURLConnection) url.openconnection(); conn.setrequestmethod("post"); conn.setrequestproperty("accept", "application/json"); conn.setrequestproperty("authorization", String.format("Basic %s", Base64.getEncoder().encodeToString(String.format("%s:%s", CLIENT_ID, SECRET).getBytes()))); if (conn.getresponsecode()!= 200) { throw new RuntimeException("Falhou : HTTP error code : " + conn.getresponsecode()); BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream()))); String tokens = null; while ((tokens = br.readline())!= null) { retorno += tokens; conn.disconnect(); return retorno; private static JwtClaims processtoclaims(string token) throws Exception { URL url = new URL(URL_PROVIDER + "/scp/jwk"); HttpsURLConnection conn = (HttpsURLConnection) url.openconnection(); conn.setrequestmethod("get"); conn.setrequestproperty("accept", "application/json"); if (conn.getresponsecode()!= 200) { 25
26 throw new RuntimeException("Falhou : HTTP error code : " + conn.getresponsecode()); BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream()))); String ln = null, jwk = ""; while ((ln = br.readline())!= null) { jwk += ln; conn.disconnect(); JSONParser parser = new JSONParser(); JSONObject tokensjson = (JSONObject) parser.parse(jwk); JSONArray keys = (JSONArray) tokensjson.get("keys"); JSONObject keyjsonobject = (JSONObject) keys.get(0); String key = keyjsonobject.tojsonstring(); PublicJsonWebKey pjwk = PublicJsonWebKey.Factory.newPublicJwk(key); JwtConsumer jwtconsumer = new JwtConsumerBuilder().setRequireExpirationTime() // Exige que o token tenha um tempo de validade.setmaxfuturevalidityinminutes(60) // Testa se o tempo de validade do access token é inferior ou igual ao tempo máximo estipulado (Tempo padrão de 60 minutos).setallowedclockskewinseconds(30) // Esta é uma boa prática..setrequiresubject() // Exige que o token tenha um Subject..setExpectedIssuer(URL_PROVIDER + "/scp/") // Verifica a procedência do token..setverificationkey(pjwk.getpublickey()) // Verifica a assinatura com a public key fornecida..build(); // Cria a instância JwtConsumer. return jwtconsumer.processtoclaims(token); private static String getuserinfo(string accesstoken, String scope) { String retorno = ""; try { URL url = new URL(URL_SERVICOS + "/servicos- 26
27 ecidadao/ecidadao/usuario/getuserinfo/" + scope); HttpsURLConnection conn = (HttpsURLConnection) url.openconnection(); conn.setrequestmethod("get"); conn.setrequestproperty("accept", "application/json"); conn.setrequestproperty("authorization", accesstoken); if (conn.getresponsecode()!= 200) { throw new RuntimeException("Falhou : HTTP error code : " + conn.getresponsecode()); String output; BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream()))); while ((output = br.readline())!= null) { retorno += output; conn.disconnect(); catch (MalformedURLException e) { e.printstacktrace(); catch (IOException e) { e.printstacktrace(); return retorno; private static String getempresasvinculadas(string accesstoken, String scope) throws Exception { String retorno = ""; URL url = new URL(URL_SERVICOS + "/servicosecidadao/ecidadao/empresa/escopo/" + scope); HttpsURLConnection conn = (HttpsURLConnection) url.openconnection(); conn.setrequestmethod("get"); conn.setrequestproperty("accept", "application/json"); conn.setrequestproperty("authorization", accesstoken); 27
28 if (conn.getresponsecode()!= 200) { throw new RuntimeException("Falhou : HTTP error code : " + conn.getresponsecode()); String output; BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream()))); while ((output = br.readline())!= null) { retorno += output; conn.disconnect(); return retorno; private static String getdadosempresa(string accesstoken, String cnpj, String scope) throws Exception { String retorno = ""; URL url = new URL(URL_SERVICOS + "/servicos-ecidadao/ecidadao/empresa/" + cnpj + "/escopo/" + scope); HttpsURLConnection conn = (HttpsURLConnection) url.openconnection(); conn.setrequestmethod("get"); conn.setrequestproperty("accept", "application/json"); conn.setrequestproperty("authorization", accesstoken); if (conn.getresponsecode()!= 200) { throw new RuntimeException("Falhou : HTTP error code : " + conn.getresponsecode()); String output; BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream()))); while ((output = br.readline())!= null) { retorno += output; 28
29 conn.disconnect(); return retorno; private static String getconfiabilidade(string accesstoken) throws Exception { String retorno = ""; URL url = new URL(URL_SERVICOS + "/servicosecidadao/ecidadao/usuario/getconfiabilidade"); HttpsURLConnection conn = (HttpsURLConnection) url.openconnection(); conn.setrequestmethod("get"); conn.setrequestproperty("accept", "application/json"); conn.setrequestproperty("authorization", accesstoken); if (conn.getresponsecode()!= 200) { throw new RuntimeException("Falhou : HTTP error code : " + conn.getresponsecode()); String output; BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream()))); while ((output = br.readline())!= null) { retorno += output; conn.disconnect(); return retorno; private static String createrandomnumber() { return new BigInteger(50, new SecureRandom()).toString(16); PHP 1. Arquivo CSS: 29
30 * { box-sizing: border-box; body { font-family: Arial, Helvetica, sans-serif; margin: 0;.header { padding: 20px; text-align: center; background: rgb(240, 242, 241); color: rgb(51, 51, 51);.header h1 { font-size: 40px;.navbar { overflow: hidden; background-color: #333; position: sticky; position: -webkit-sticky; top: 0;.navbar a { float: left; display: block; color: white; text-align: center; padding: 14px 20px; text-decoration: none;.navbar a.right { float: right;.navbar a:hover { background-color: #ddd; 30
31 color: black;.navbar a.active { background-color: #666; color: white;.row { display: -ms-flexbox; /* IE10 */ display: -webkit-box; /* chrome */ -webkit-justify-content: space-around; /* chrome */ -webkit-flex-flow: row wrap; /* chrome */ -webkit-align-items: stretch; /* chrome */ display: flex; -ms-flex-wrap: wrap; /* IE10 */ flex-wrap: wrap;.left_side { -ms-flex: 30%; /* IE10 */ flex: 30%; width: 30%; /* chrome */ background-color: #f1f1f1; padding: 20px;.right_side { -ms-flex: 70%; /* IE10 */ flex: 70%; width: 70%; /* chrome */ background-color: white; padding: 20px;.result { background-color: #aaa; width: 100%; padding: 20px;.resultValido { background-color: green; 31
32 width: 100%; padding: 20px;.resultInvalido { background-color: red; width: 100%; padding: 20px; /* Footer */.footer { padding: 20px; text-align: center; background: #ddd; /* Responsive layout - when the screen is less than 700px wide, make the two columns stack on top of each other instead of next to each other screen and (max-width: 700px) {.row { flex-direction: column; /* Responsive layout - when the screen is less than 400px wide, make the navigation links stack on top of each other instead of next to each other screen and (max-width: 400px) {.navbar a { float: none; width: 100%; pre { white-space: pre-wrap; /* css-3 */ white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ word-wrap: break-word; /* Internet Explorer 5.5+ */ /* Center the loader */ 32
33 #loader { position: absolute; left: 50%; top: 50%; z-index: 1; width: 150px; height: 150px; margin: -75px px; border: 16px solid #f3f3f3; border-radius: 50%; border-top: 16px solid #3498db; width: 120px; height: 120px; -webkit-animation: spin 2s linear infinite; animation: spin 2s linear spin { 0% { -webkit-transform: rotate(0deg); 100% { -webkit-transform: spin { 0% { transform: rotate(0deg); 100% { transform: rotate(360deg); <?php 2. Arquivo PHP /** * * O presente código tem por objetivo exemplificar de forma minimalista o consumo dos serviços utilizados pelo Brasil Cidadão. * */ use \Firebase\JWT\JWT; $URL_PROVIDER=" $CLIENT_ID = "<coloque-aqui-o-clientid-cadastrado-para-o-seu-sistema>"; $SECRET = "<coloque-aqui-o-secret-cadastrado-para-o-seu-sistema>"; 33
34 $REDIRECT_URI = "<coloque-aqui-a-uri>"; $SCOPE = "openid+brasil_cidadao+brasil_cidadao_empresa"; $URL_SERVICOS=" /* * Etapa 1: No Browser, chamar a URL do Authorize para recuperar o code e o state (opcional) conforme o exemplo abaixo: * response_type=code&client_id=<coloque-aqui-o-clientid>&scope=openid+brasil_cidadao+brasil_cidadao_empresa&redirect_uri=<coloque-aqui-a-uri-deredirecionamento>&nonce=<coloque-aqui-um-numero-aleatorio>&state=<coloque-aqui-umnumero-aleatorio> * Descrição dos parametros: * response_type: Sempre "code"; * client_id: Identificador do sistema que usa o Brasil Cidadão. Este identificador é único para cada sistema; * scope: Lista de escopos requisitados pelo sistema. Escopos são agrupamentos de informações cujo acesso deverá * ser autorizado pelo cidadão que acessa o sistema. Cada sistema deverá informar que conjunto de informações (escopos) deseja; * redirect_uri: Uri para qual será feito o redirect após o login do cidadão (usuário). Para Celulares, usamos uma pseudo URI; * nonce: número aleatório; * state: número aleatório (opcional) * * Observação: Sem o escopo "brasil_cidadao_empresa", não será possível utilizar o serviço de recuperação de informações de empresas. */ $uri = $URL_PROVIDER. "/scp/authorize?response_type=code". "&client_id=". $CLIENT_ID. "&scope=". $SCOPE. "&redirect_uri=". urlencode($redirect_uri). "&nonce=". getrandomhex(). "&state=". getrandomhex(); function getrandomhex($num_bytes=4) { return bin2hex(openssl_random_pseudo_bytes($num_bytes)); /* Etapa 2: De posse do code retornado pelo passo 1, chame o serviço para recuperar os tokens disponíveis para sua aplicação 34
35 (Access Token, Id Token e refresh Token (caso necessário)) conforme o exemplo abaixo. */ $CODE = $_REQUEST["code"]; $STATE = $_REQUEST["state"]; if (isset($code)) { $campos = array( 'grant_type' => urlencode('authorization_code'), 'code' => urlencode($code), 'redirect_uri' => urlencode($redirect_uri) ); foreach($campos as $key=>$value) { $fields_string.= $key.'='.$value.'&'; rtrim($fields_string, '&'); $ch_token = curl_init(); curl_setopt($ch_token,curlopt_url, $URL_PROVIDER. "/scp/token" ); curl_setopt($ch_token,curlopt_post, count($fields)); curl_setopt($ch_token,curlopt_postfields, $fields_string); curl_setopt($ch_token, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch_token,curlopt_ssl_verifypeer, false); $headers = array( 'Content-Type:application/x-www-form-urlencoded', 'Authorization: Basic '. base64_encode($client_id.":".$secret) ); curl_setopt($ch_token, CURLOPT_HTTPHEADER, $headers); $json_output_tokens = json_decode(curl_exec($ch_token), true); curl_close($ch_token); /** * Etapa 3: De posse do access token, podemos extrair algumas informações acerca do usuário. Aproveitamos também para checar a assinatura e tempo de expiração do token. * Para isso, este exemplo usa a biblioteca chamada "firebase/php-jwt" mas qualquer outra biblioteca que implemente a especificação pode ser usada. * * O Access Token fornece as seguintes informações acerca do usuário: * 1- id client da aplicação à qual o usuário se autenticou; * 2- Escopos requeridos pela aplicação autorizados pelo usuário; * 3- CPF do usuário autenticado * 4- Nome completo do usuário cadastrado no Brasil Cidadão. Atenção, este é o nome que foi fornecido pelo usuário no momento do seu cadastro 35
36 * (ou obtido do Certificado Digital e-cpf caso o cadastro tenha sido feito por este meio). O Serviço getuserinfo obtém as informações do * usuário direto da Receita Federal. */ $url = $URL_PROVIDER. "/scp/jwk" ; $ch_jwk = curl_init(); curl_setopt($ch_jwk,curlopt_ssl_verifypeer, false); curl_setopt($ch_jwk,curlopt_url, $url); curl_setopt($ch_jwk, CURLOPT_RETURNTRANSFER, TRUE); $json_output_jwk = json_decode(curl_exec($ch_jwk), true); curl_close($ch_jwk); $access_token = $json_output_tokens['access_token']; try{ $json_output_payload_access_token = processtoclaims($access_token, $json_output_jwk); catch (Exception $e) { $detalhamentoerro = $e; /* Serviço de obtenção cadastro do usuário: De posse do access token, a aplicação pode chamar o serviço de recuperação de informações do usuário (getuserinfo) conforme o exemplo abaixo. */ $url = $URL_SERVICOS. "/servicosecidadao/ecidadao/usuario/getuserinfo/brasil_cidadao" ; $ch_user_info = curl_init(); curl_setopt($ch_user_info,curlopt_ssl_verifypeer, false); curl_setopt($ch_user_info,curlopt_url, $url); curl_setopt($ch_user_info, CURLOPT_RETURNTRANSFER, TRUE); $headers = array( 'Authorization: '. $json_output_tokens['access_token'] ); curl_setopt($ch_user_info, CURLOPT_HTTPHEADER, $headers); $json_output_user_info = json_decode(curl_exec($ch_user_info), true); curl_close($ch_user_info); /* Serviço de obtenção de selos de Confiabilidade: De posse do access token, a aplicação pode chamar o serviço para saber quais selos o usuário logado possui. */ 36
37 $ch_confiabilidade = curl_init(); curl_setopt($ch_confiabilidade,curlopt_ssl_verifypeer, false); curl_setopt($ch_confiabilidade,curlopt_url, $URL_SERVICOS. "/servicosecidadao/ecidadao/usuario/getconfiabilidade"); curl_setopt($ch_confiabilidade, CURLOPT_RETURNTRANSFER, TRUE); $headers = array( 'Accept: application/json', 'Authorization: '. $json_output_tokens['access_token'] ); curl_setopt($ch_confiabilidade, CURLOPT_HTTPHEADER, $headers); $json_output_confiabilidade = json_decode(curl_exec($ch_confiabilidade), true); curl_close($ch_confiabilidade); /* Verificar se CPF autenticado possui selo de Confiabildidade e-cnpj. */ if ($json_output_confiabilidade['nivel'] == '11') { /* Serviço de recuperação de empresas vinculadas: De posse do access token, a aplicação pode chamar o serviço para saber quais empresas se encontram vinculadas ao usuário logado. */ $ch_empresas_vinculadas = curl_init(); curl_setopt($ch_empresas_vinculadas,curlopt_ssl_verifypeer, false); curl_setopt($ch_empresas_vinculadas,curlopt_url, $URL_SERVICOS. "/servicos-ecidadao/ecidadao/empresa/escopo/brasil_cidadao_empresa"); curl_setopt($ch_empresas_vinculadas, CURLOPT_RETURNTRANSFER, TRUE); $headers = array( 'Accept: application/json', 'Authorization: '. $json_output_tokens['access_token'] ); curl_setopt($ch_empresas_vinculadas, CURLOPT_HTTPHEADER, $headers); $json_output_empresas_vinculadas = json_decode(curl_exec($ch_empresas_vinculadas), true); curl_close($ch_empresas_vinculadas); /* Serviço de detalhamento da empresa vinculada: De posse do access token, a aplicação pode chamar o serviço para obter dados de uma empresa específica e o papel do usuário logado nesta empresa. 37
38 */ $cnpj = $json_output_empresas_vinculadas[0]; $ch_papel_empresa = curl_init(); curl_setopt($ch_papel_empresa,curlopt_ssl_verifypeer, false); curl_setopt($ch_papel_empresa,curlopt_url, $URL_SERVICOS. "/servicos-ecidadao/ecidadao/empresa/". $cnpj. "/escopo/brasil_cidadao_empresa"); curl_setopt($ch_papel_empresa, CURLOPT_RETURNTRANSFER, TRUE); $headers = array( 'Accept: application/json', 'Authorization: '. $json_output_tokens['access_token'] ); curl_setopt($ch_papel_empresa, CURLOPT_HTTPHEADER, $headers); $json_output_papel_empresa = json_decode(curl_exec($ch_papel_empresa), true); curl_close($ch_papel_empresa); /** * Função que valida o access token (Valida o tempo de expiração e a assinatura) * */ function processtoclaims($access_token, $jwk) { $modulus = JWT::urlsafeB64Decode($jwk['keys'][0]['n']); $publicexponent = JWT::urlsafeB64Decode($jwk['keys'][0]['e']); $components = array( 'modulus' => pack('ca*a*', 2, encodelength(strlen($modulus)), $modulus), 'publicexponent' => pack('ca*a*', 2, encodelength(strlen($publicexponent)), $publicexponent) ); $RSAPublicKey = pack( 'Ca*a*a*', 48, encodelength(strlen($components['modulus']) + strlen($components['publicexponent'])), $components['modulus'], $components['publicexponent'] ); $rsaoid = pack('h*', '300d06092a864886f70d '); // hex version of MA0GCSqGSIb3DQEBAQUA $RSAPublicKey = chr(0). $RSAPublicKey; $RSAPublicKey = chr(3). encodelength(strlen($rsapublickey)). $RSAPublicKey; 38
39 $RSAPublicKey = pack( 'Ca*a*', 48, encodelength(strlen($rsaoid. $RSAPublicKey)), $rsaoid. $RSAPublicKey ); $RSAPublicKey = "-----BEGIN PUBLIC KEY-----\r\n". chunk_split(base64_encode($rsapublickey), 64). '-----END PUBLIC KEY-----'; JWT::$leeway = 3 * 60; //em segundos $decoded = JWT::decode($access_token, $RSAPublicKey, array('rs256')); return (array) $decoded; function encodelength($length) { if ($length <= 0x7F) { return chr($length); $temp = ltrim(pack('n', $length), chr(0)); return pack('ca*', 0x80 strlen($temp), $temp);?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="x-ua-compatible" content="ie=edge"> <title>sti Brasil Cidadao</title> <link rel="stylesheet" type="text/css" href="css/sti.css"> <script> function waiting() { document.getelementbyid("loader").style.display = "block"; </script> </head> <body> 39
40 <div class="header"> <h1>sti Brasil Cidadão</h1> <p><b>s</b>ite de <b>t</b>este <b>i</b>ntegrado ao Brasil Cidadão</p> <div class="navbar"> <?php if (isset($json_output_payload_access_token)) { echo '<a href="#" class="right">logout</a>'; else { echo '<a href="'. $uri.'" onclick="waiting();" class="right">logar com o Brasil Cidadão</a>';?> <div id="loader" style="display:none"> <div class="row"> <div class="left_side"> <div> <h3>etapa 1 (obrigatório): Autenticação</h3> <p>ao clicar no botão "Logar com o Brasil Cidadão" a seguinte URL será chamada:</p> <div class="right_side"> <h3>url do Serviço Authorize:</h3> <div class="result" style="height:200px;"> <pre><?php echo $uri?></pre> <?php if (isset($json_output_tokens)) {?> <div class="row"> <div class="left_side"> <div> <h3>etapa 2 (obrigatório): Recuperar os Tokens</h3> <p>de posse do code retornado pelo passo 1, chame o serviço para recuperar os tokens disponívels para sua aplicação (Access Token, Id Token e refresh Token (caso 40
API olx.com.br. Utilizando o protocolo OAuth 2.0
API olx.com.br Utilizando o protocolo OAuth 2.0 Resumo Este documento descreve como utilizar o protocolo oauth 2.0 como forma de autenticação na API olx.com.br através de uma aplicação web. OAuth 2.0 é
TECNOLOGIAS WEB. Unidade 3 Linguagem de Marcação e Estilo. Luiz Leão
Luiz Leão luizleao@gmail.com http://luizleao.com Conteúdo da Unidade Cascading Style Sheet (CSS) Linguagem CSS Introdução É uma linguagem de folhas de estilo utilizada para definir a apresentação de documentos
Guia de Integração de Serviço Público Digital
Guia de Integração de Serviço Público Digital Plataforma Brasil Cidadão Roteiro de Integração (SDK-v1.2) Sumário Contexto Introdução Procedimentos de Cadastro do Serviço Arquitetura de Serviço e Protocolos
Manual de Solicitação de Serviços servicos.gov.br
Manual de Solicitação de Serviços servicos.gov.br Ministério do Planejamento, Desenvolvimento e Gestão Secretaria de Tecnologia da Informação e Comunicação Departamento de Serviços Públicos Digitais Coordenação-Geral
PUSH WEB SERVER HTTP GATEWAY. Versão 1.0
PUSH WEB SERVER HTTP GATEWAY Versão 1.0 Índice Introdução 2 Plataforma técnica 2 Pedido de criação de campanha PUSH WEB 3 URL 3 Método 3 Parâmetros 3 Obrigatórios 3 name (string) 3 type (string) 3 groups
SISTEMA DE EMISSÃO DE NOTA FISCAL DE PRESTAÇÃO DE SERVIÇOS
SISTEMA DE EMISSÃO DE NOTA FISCAL DE PRESTAÇÃO DE SERVIÇOS MANUAL DE INTEGRAÇÃO DE SERVIÇOS Versão 1.0.0.2 Layout único Florianópolis - SC 1 Sumário 1. Controle de alterações... 3 2. Introdução... 3 3.
Manual de uso da API de Avaliação e Acompanhamento. servicos.gov.br
Manual de uso da API de Avaliação e Acompanhamento servicos.gov.br jun 22, 2018 Introdução 1 Apresentação 1 1.1 Formas de uso.............................................. 1 1.2 Fluxo simplificado para
Admin Docs Documentation
Admin Docs Documentation Versão 3.0.0 FrontEnd Team 08/11/2016 Sumário 1 Visão Geral 3 2 Braspag Auth 5 2.1 Introdução................................................ 5 2.2 Obtenção de Autorização........................................
Layout de integração com webservices de clientes. Serviço de autenticação do cooperado
Layout de integração com webservices de clientes Serviço de autenticação do cooperado Alterações no documento Data Autor Assunto Descrição 11/09/2016 Geraldo Felix Junior Criação Criação do documento 26/06/2018
POP s. POP 12.1 Usuário Externo. (Procedimento Operacional Padrão) Versão 01, Fev/2018.
POP s (Procedimento Operacional Padrão) POP 12.1 Usuário Externo Versão 01, Fev/2018. I. Apresentação O objetivo deste manual é orientar o usuário externo do SEI da UFPel a se cadastrar, acessar, recuperar
Plataforma Dados Saúde. WebAPI
Plataforma Dados Saúde WebAPI Consulta de MCDTs / Exames Este trabalho não pode ser reproduzido ou divulgado, na íntegra ou em parte, a terceiros nem utilizado para outros fins que não aqueles para que
Folhas de Estilo em Cascata CSS
Folhas de Estilo em Cascata CSS Estilização Efeitos Animações Micro interações Estrutura: seletor { regra: valor ; regra: valor ; regra: valor ; h1 { color: red ; background: white; padding: 15px
POP s. POP 12.1 Usuário Externo. (Procedimento Operacional Padrão) Versão 01, Fev/2018.
POP s (Procedimento Operacional Padrão) POP 12.1 Usuário Externo Versão 01, Fev/2018. I. Apresentação O objetivo deste manual é orientar o usuário externo do SEI da UFPel a se cadastrar, acessar, recuperar
Introdução ao GAM. Agora queremos aumentar a Segurança da aplicação, tanto na parte web como a de Smart Device. Page1
Page1 Introdução ao GAM Nos vídeos anteriores vimos o desenvolvimento de uma aplicação web e para dispositivos móveis, para administrar os dados de um evento, com informação de suas conferências, oradores,
MANUAL DE INTEGRAÇÃO. Plataforma Simplus
Plataforma Simplus Versão v2 Revisado Set/2018 Introdução O presente documento visa orientar clientes e parceiros usuários da plataforma Simplus na integração de dados e demais ativos digitais de produtos,
1 INTRODUÇÃO CERTIFICADO DE SEGURANÇA SSL AUTENTICAÇÃO WEB METHOD: LOGIN WEB METHOD: LISTBONDCODES...
ÍNDICE 1 INTRODUÇÃO... 3 2 CERTIFICADO DE SEGURANÇA SSL... 3 3 AUTENTICAÇÃO... 4 4 WEB METHOD: LOGIN... 5 5 WEB METHOD: LISTBONDCODES... 6 6 WEB METHOD: LISTBONDCODESCSV... 6 7 WEB METHOD: LISTTITULOSPUBLICOS...
Login Google. Copie a SSL URL, que no meu caso é https://localhost:44300/
Login Google Acessar NuGet Instalar o pacote Microsoft.Owin.Security.Cookies Instalar o pacote Microsoft.Owin.Security.Google Instalar Microsoft.Owin.Host.SystemWeb Habilitando SSL Para comunicar com Google
MANUAL DE USUÁRIO. Versão 1.0 Servidor
MANUAL DE USUÁRIO Versão 1.0 Servidor SUMÁRIO 1. Acesso ao Sistema... 4 1.1. Acesso (LOGIN)... 5 1.2. Cadastro... 6 2. Sistema 2.1. Visão Inicial... 10 2.2. Itens do Menu de Navegação... 11 2.3. Informações
INTRODUÇÃO À PROGRAMAÇÃO EXERCÍCIO DE REVISÃO
INTRODUÇÃO À PROGRAMAÇÃO EXERCÍCIO DE REVISÃO Questões de concurso 1. Na interface Web, ele é um arquivo independente do arquivo HTML no qual são declaradas propriedades e valores de estilização para os
API SEBRAE MÉTODOS PARA INTEGRAÇÃO COM A PLATAFORMA Versão 1.0 Brasília 2017
API SEBRAE MÉTODOS PARA INTEGRAÇÃO COM A PLATAFORMA Versão 1.0 Brasília 2017 Manual API SEBRAE HISTÓRICO DE VERSÕES Data Versão Descrição Autor 17/01/2017 1.0 Criação Cast Group Sumário 1 INTRODUÇÃO...5
HTML, CSS e JavaScript
HTML, CSS e JavaScript Contato: Site: http://professores.chapeco.ifsc.edu.br/lara/ 1 Arquivo externo Dentro da tag head: 2 Qual a dirença
CSS (Cascading Style Sheet)
CSS (Cascading Style Sheet) André Tavares da Silva andre.silva@udesc.br CSS Folha de Estilo em Cascata Mecanismo simples para adicionar estilos (fontes, cores, espaçamentos, por exemplo) aos documentos
Desenvolvimento Web II
Desenvolvimento Web II Framework Laravel 5 Autenticação / Auth (https://laravel.com/docs/5.6/authentication) Gil Eduardo de Andrade Introdução: O Laravel fornece, nativo, uma API de autenticação que permite
Petter Anderson Lopes Arbitragem, Desenvolvimento Seguro, Segurança Ofensiva e Forense Computacional
Requerente: Metadados Assessoria e Sistemas. Empresa: Metadados Assessoria e Sistemas Especialista: Petter Anderson Lopes. Período: fevereiro de 2019. Modelo: Pentest, OWASP Top 10 2013 compliance. OWASP
Danos Pessoais Causados por Veículos Auto Motores de Via Terrestre DPVAT BILHETES. Documentação do Web Service Versão 1.3
Danos Pessoais Causados por Veículos Auto Motores de Via Terrestre DPVAT BILHETES Documentação do Web Service Versão 1.3 Índice 1. INFORMAÇÕES GERAIS SOBRE O SERVIÇO... 4 1.1 CONTEXTO... 4 1.2 OBJETIVO...
Manual do Módulo do Fabricante
PROJETO SAT-ISS SISTEMA DE AUTENTICAÇÃO E TRANSMISSÃO DE DOCUMENTOS FISCAIS ELETRÔNICOS Manual do Módulo do Fabricante Versão: 1.01 (27/05/2014) Para baixar a versão mais atualizada deste documento, acesse:
Manual de Utilização do Módulo Operacional. í n d i c e. Passo 1: Visão geral 3. Passo 2: Como acessar o Consultório Online? 3
í n d i c e Passo 1: Visão geral 3 Passo 2: Como acessar o Consultório Online? 3 Passo 3: Recursos disponíveis 4 Guias consulta / SADT (Solicitação, Execução com Guia e Autogerada): 4 Pesquisa de histórico
Plataforma Dados Saúde. WebAPI
Plataforma Dados Saúde WebAPI Consulta de MCDTs / Exames Este trabalho não pode ser reproduzido ou divulgado, na íntegra ou em parte, a terceiros nem utilizado para outros fins que não aqueles para que
Coordenação Geral de Tecnologia da Informação - CGTI. SOLICITA SISTEMA DE SOLICITAÇÃO DE ACESSO Manual de Usuário. Versão 1.0
SOLICITA SISTEMA DE SOLICITAÇÃO DE ACESSO Manual de Usuário Versão 1.0 Histórico da Revisão Data Versão Descrição Autor 05/08/2016 1.0 Criação do Artefato Eliene Carvalho MAPA/SE/SPOA/CGTI. Página 2 de
SISTEMA PATRIMÔNIO WEB
UNIVERSIDADE DE SÃO PAULO Subcomissão de Patrimônio - GEFIM REITORIA DA UNIVERSIDADE DE SÃO PAULO COMPATRIM/GEFIM SISTEMA PATRIMÔNIO WEB Manual do usuário v.1.1 Sumário Introdução... 4 Fluxo das Principais
Coletando dados utilizando a API do Zabbix com PHP e JSON
Coletando dados utilizando a API do Zabbix com PHP e JSON INTRODUÇÃO: O Zabbix possui uma limitação quanto à montagem de painéis a serem utilizados por pessoas que não estão acostumadas a utilizar a sua
SISNOR WEB SISTEMA INTEGRADO DE APOIO À FISCALIZAÇÃO DOS SERVIÇOS NOTARIAIS E DE REGISTRO INFORMAÇÕES GERAIS
SISNOR WEB SISTEMA INTEGRADO DE APOIO À FISCALIZAÇÃO DOS SERVIÇOS NOTARIAIS E DE REGISTRO INFORMAÇÕES GERAIS Manual de Usuário Versão 4.1 1 Histórico de Revisões: Versão 1.0 02/01/2013: Raphael Pena Cavalcanti
API SEBRAE MÉTODOS PARA INTEGRAÇÃO COM A BIS. Versão 1.0
API SEBRAE MÉTODOS PARA INTEGRAÇÃO COM A BIS Versão 1.0 Brasília 2016 Manual API SEBRAE HISTÓRICO DE VERSÕES Data Versão Descrição Autor 11/07/2016 1.0 Criação Via Appia Informática SUMÁRIO 1 INTRODUÇÃO...
Recomenda-se a leitura completa deste documento antes de iniciar o desenvolvimento do website.
Universidade Federal de Uberlândia Faculdade de Computação Curso de Sistemas de Informação Projeto de Programação para Internet Prof. Daniel A Furtado Descrição Geral Desenvolver um website para uma imobiliária
1 INTRODUÇÃO CERTIFICADO DE SEGURANÇA SSL AUTENTICAÇÃO WEB METHOD: LOGIN WEB METHOD: LISTBONDCODES...
ÍNDICE 1 INTRODUÇÃO... 3 2 CERTIFICADO DE SEGURANÇA SSL... 3 3 AUTENTICAÇÃO... 4 4 WEB METHOD: LOGIN... 5 5 WEB METHOD: LISTBONDCODES... 6 6 WEB METHOD: LISTBONDCODESCSV... 6 7 WEB METHOD: LISTTITULOSPUBLICOS...
Figura 1: Eclipse criação de um Dynamic Web Project
Prática da Disciplina de Sistemas Distribuídos Web Services Parte 2 IFMA DAI Professor Mauro Lopes C. Silva 1. Criação de um Serviço Rest Utilizando a configuração realizada na prática anterior, iremos
Instruções para utilização
Acesso Remoto ao Portal da CAPES via Web Instruções para utilização Universidade Federal de Sergipe O que é? A UFS está integrada à Comunidade Acadêmica Federada (CAFe), serviço provido pela Rede Nacional
MANUAL DE #NOVAGOL SUPORTE FORNECEDORES
MANUAL DE SUPORTE #NOVAGOL FORNECEDORES SU MÁ RIO 1. REQUISITOS DE CADASTRO... 1.1. Documentação Necessária... 2. PRÉ-CADASTRO DE FORNECEDORES... 2.1. Como Fazer o Pré-cadastro... 2.2. Informações Básicas...
1. Registro da Serventia, Certificado e Software para o Selo Digital do TJSP
Sumário 1. Registro da Serventia, Certificado e Software para o Selo Digital do TJSP... 2 1.1 Registro da Serventia:... 2 1.2 Envio do Certificado Digital da Serventia (Chave Pública)... 4 1.3 Cadastro
HTML 5 LINGUAGEM DE MARCAÇÃO E ESTILO - CSS - Prof. Rosemary Melo
HTML 5 LINGUAGEM DE MARCAÇÃO E ESTILO - CSS - Prof. Rosemary Melo RESUMO Linguagem de Marcação e Estilo - CSS DESCRIÇÃO Regra CSS Vinculação Inline Vinculação Incorporada Vinculação Externa TAGS seletor
CETEC Centro Paula Souza
Atualização da Competição Maratona de Programação 2018 2º Semestre Finalidade Este documento tem por finalidade informar aos professores responsáveis pelos times das unidades participantes da Maratona
Portal de Cotação da FCC S.A.
da FCC S.A. Manual do fornecedor Revisão 2 17/07/2017 Portal de Cotação da FCC S.A. Manual do fornecedor Introdução Para facilitar o processo de compras da FCC S.A. foi criado um novo portal de cotações,
Registro Nacional de Carteira de Habilitação RENACH. Manual do Produto. Versão 2.1
Registro Nacional de Carteira de Habilitação RENACH Manual do Produto Versão 2.1 Junho/2015 Índice 1. INFORMAÇÕES GERAIS SOBRE O PRODUTO... 3 1.1 CONTEXTO... 3 1.2 OBJETIVO... 3 1.3 NOME... 3 1.4 ENDEREÇO
GUIA API BTB /04/2019 INFORMAÇÃO PÚBLICA
05/04/019 SUMÁRIO 1 HISTÓRICO DE VERSÕES... 4 INTRODUÇÃO... 5 3 VISÃO GERAL... 5 3.1 Verbos HTTP API - BTB... 5 3. Uso do POST... 6 3.3 Uso do GET... 7 3.4 Endpo... 7 3.5 Restrições... 7 4 ENDEREÇOS DA
Introdução ao HTML e às folhas de estilo (CSS)
MIEEC SIEM ano letivo 2013/14 Introdução ao HTML e às folhas de estilo (CSS) José A. Faria (jfaria@fe.up.pt) FEUP, DEIG Setembro 2013 MIEEC SIEM --- 1 --- José António Faria Introdução ao protocolo HTTP
Linguagem de Programação II Implementação
Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa
Integração Fidelimax. Versão Atual
Integração Fidelimax Versão Atual 2.0 https://api.fidelimax.com.br Mapeamento da API Todo retorno da API exibe um parâmetro de resposta e uma mensagem de erro quando houver algo diferente de uma requisição
FS-FESP/Manual do Usuário. Manual do Usuário Fábrica de Software FESP
/Manual do Usuário Manual do Usuário Fábrica de Software FESP Fábrica Software FESP Rua José Getúlio, 78/90. Liberdade. São Paulo SP negocios@unimeds.com.br ÍNDICE 1. INTRODUÇÃO... 3 2. OBJETIVO DO SISTEMA...
Integração REST Text2Speech Versão 1.1
1 Integração REST Text2Speech Versão 1.1 2 Índice de Conteúdos Introdução Page. 3 Plataforma Técnica Petição envíos de mensagens de voz Page. 4 Petição JSON Page. 4 Exemplo solicitação CURL Page. 5 Exemplo
Danos Pessoais Causados por Veículos Auto Motores de Via Terrestre DPVAT BILHETES. Manual do Produto Versão 2.2
Danos Pessoais Causados por Veículos Auto Motores de Via Terrestre DPVAT BILHETES Manual do Produto Versão 2.2 Junho/2016 Índice 1. INFORMAÇÕES GERAIS SOBRE O PRODUTO... 3 1.1 CONTEXTO... 3 1.2 OBJETIVO...
<HTML> Vinícius Roggério da Rocha
Vinícius Roggério da Rocha www.monolitonimbus.com.br O que é HTML? HTML = HyperText Markup Language ou Linguagem de Marcação de Hipertexto Linguagem: maneira de se comunicar (entre máquinas, pessoas
VALIDAÇÃO DE DADOS COM O PADRÃO MVC
VALIDAÇÃO DE DADOS COM O PADRÃO MVC Emanuel Braz da Cruz Leonardo Soares Vianna André Lúcio de Oliveira Bruno Lessa RESUMO A validação de dados no padrão MVC consiste de atributos simples e fácil de usar
Gráficos Comerciais na WEB com Chart.js
Gráficos Comerciais na WEB com Chart.js Compilação feita com base nas referências por: José Augusto Cintra Professor da Faculdade Sumaré SP Analista de TI da Empresa PRODAM SP josecintra@josecintra.com
Bem Vindo ao Sistema ISSMAP
Bem Vindo ao Sistema ISSMAP Portal de Emissão de Nota Fiscal de Serviço 1º Modulo: Cadastro no Sistema SUMÁRIO INTRODUÇÃO... 3 ACESSO... 3 1. REALIZANDO CADASTRO NO SISTEMA... 4 1.1 Pessoa Física... 5
desenvolva aplicações web profissionais com uso dos poderosos recursos de estilização das css3 Maurício Samy Silva
CSS3 desenvolva aplicações web profissionais com uso dos poderosos recursos de estilização das css3 Maurício Samy Silva Novatec Copyright 2012 da Novatec Editora Ltda. Todos os direitos reservados e protegidos
CONCAFÉ. Manual do Usuário Dúvidas frequentes
CONCAFÉ Manual do Usuário Dúvidas frequentes SUMÁRIO 1. Introdução...3 2. Funcionalidades do Sistema...3 2.1. Autenticação...3 2.1.1. Como acessar o sistema...3 2.2. Como solicitar acesso ao sistema...4
Aplicativos móveis com HTML5
Aplicativos móveis com HTML5 Preparando o ambiente de desenvolvimento O código HTML pode ser escrito em qualquer editor de texto comum. Você pode utilizar o editor padrão do seu sistema operacional (Bloco
CONCURSO PÚBLICO PARA PROVIMENTO DE CARGO EFETIVO PROFESSOR DE ENSINO BÁSICO, TÉCNICO E TECNOLÓGICO Edital 09/2015 Campus Manhuaçu FOLHA DE PROVA
Tema 01: MODELOS DE PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE Defina o que é um Modelo de Processo de Desenvolvimento de Software. Faça a descrição das atividades que são comuns a todos os processos. Descreva
MANUAL DE INTEGRAÇÃO API DE PAGAMENTOS PRIXPAY v.003
MANUAL DE INTEGRAÇÃO API DE PAGAMENTOS PRIXPAY v.003 1 Sumário Propósito do Documento...3 Fluxo de pagamentos...3 Endpoints...3 Componentes necessários para gerar o QR Code...4 Retorno...4 Códigos de exemplo...5
API DE INTEGRAÇÃO VERSÃO 2. Janeiro/2017. Manual de Integração. Setor de Desenvolvimento
API DE INTEGRAÇÃO VERSÃO 2 Janeiro/2017 Manual de Integração Setor de Desenvolvimento assistencia@litoralcar.com.br Sumário INTRODUÇÃO A API VERSÃO 2... 3 AUTENTICAÇÃO... 3 URL BASE... 3 FORMATO DO ENVIO...
Sistema Aduaneiro de Recepção de COD
Manual de Utilização Sistema Aduaneiro de Recepção de COD Agosto de 2016 1 INTRODUÇÃO 2 1.1 Conceitos importantes 2 2 HABILITAÇÃO E FORMA DE ACESSO 2 2.1 Habilitação em perfis 2 2.2 Acesso 3 3 - PÁGINA
PROGRAMAÇÃO PARA INTERNET RICA FUNDAMENTOS DO CSS PARTE II
PROGRAMAÇÃO PARA INTERNET RICA FUNDAMENTOS DO CSS PARTE II Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o CSS como ferramenta de layout de página Capacitar para o posicionamento de elementos com
Manual de Integração Web Service Administradora de Cartões
Manual de Integração Web Service Administradora de Cartões 1. INTRODUÇÃO Este manual tem como objetivo apresentar as especificações e critérios técnicos necessários para utilização do Web Service disponibilizado
Login Facebook. Continuação do passo-a-passo Login Google
Continuação do passo-a-passo Login Google Login Facebook Acesse o endereço https://developers.facebook.com/apps Será necessário logar no Facebook e dar permissão de acesso. Se você ainda não é um Facebook
Como usar as funções de SuperBINA2 Server
Objetivo deste documento Este documento detalha, passo a passo, as operações necessárias para utilizar as funções de SuperBINA 2 Server no seu aplicativo, website, software ou sistema. Se você ainda não
MANUAL. Via Portal do Cidadão
MANUAL Enviar Proposta de Licitações" Via Portal do Cidadão Para efetuar esta operação o usuário deverá acessar o portal balneariopicarras.atende.net rolar a página até o final, clicando na aba Enviar
Guia de Uso Primeiro Acesso
Sistema de Gerenciamento do Fornecimento de Selos de Controle das Águas Minerais e Adicionada de Sais Guia de Uso Primeiro Acesso http:/rn.selosagua.com.br/vrn 1/8 I - TELA INICIAL O sistema terá seu acesso
Método de Acesso e Integração da Biblioteca Virtual V.1.2 Pearson Sistemas Brasil
/ 6 V..2 Pearson Sistemas Brasil Pearson, Centro de Serviços Compartilhados - Avenida Presidente Kennedy, 2295 Lagoinha. Ribeirão Preto SP Brasil Pag./6 Departamento de Suporte em TE, Fone +55 (6) 233.6060
CAU Controle de Acesso Unificado. Manual de Usuário
CAU Controle de Acesso Unificado Manual de Usuário Versão: 1.0 Última modificação: 31/1/2014 Versão 1.0 Índice 1. INTRODUÇÃO... 4 1.1 DEPENDÊNCIAS... 4 2. ANÁLISE DO PÚBLICO-ALVO... 5 2.1 PRIVILEGIADOS/MASTERS...
SISTEMA DE APOIO À GESTÃO DA RESERVA TÉCNICA INSTITUCIONAL FAPESP
SISTEMA DE APOIO À GESTÃO DA RESERVA TÉCNICA INSTITUCIONAL FAPESP http://www.propg.unifesp.br/fapesp 1 Sumário Registro no sistema... 3 Login... 4 Criar e Alterar Demandas... 5 Inclusão de Itens nas demandas...
CARTOSOFT GUIA PRÁTICO PROCART SISTEMAS
CARTOSOFT GUIA PRÁTICO PROCART SISTEMAS IMPORTAÇÃO DE SELO ELETRÔNICO Primeiros passos para a importação do lote de selo Eletrônico Sisnor 1. Usuários do Sistema O sistema tem como usuários os responsáveis
Guia de Uso Primeiro Acesso
Sistema de Gerenciamento do Fornecimento de Selos de Controle das Águas Minerais e Águas Adicionadas de Sais Guia de Uso Primeiro Acesso http:/ce.selosagua.com.br/vce 1/8 I - TELA INICIAL O sistema terá
SISCOAF Sistema de Controle de Atividades Financeiras. Cadastro e Habilitação Declaração de Inocorrência
SISCOAF Sistema de Controle de Atividades Financeiras Cadastro e Habilitação Declaração de Inocorrência Sumário ORIENTAÇÕES GERAIS... 3 O que são Pessoas Obrigadas... 4 O que é o SISCOAF... 4 Quem deve
Layout de Integração Webservice Layout de Integração com SIP via Webservices Versão 1.4
FIORILLI S/C SOFTWARE Layout de Integração Webservice Layout de Integração com SIP via Webservices Versão 1.4 SIP Sistema Integrado de Pessoal 18/01/2016 Este layout destina-se a troca de dados entre o
Por Fernando Koyanagi
Por Fernando Koyanagi Características principais Leitura da Temperatura Leitura da Umidade Montagem Vamos ao código Primeiro passo é incluir as libs que iremos utilizar. A lib do DHT pode ser adicionada
API Documentation. Release Igor Morse
API Documentation Release 1.0.0 Igor Morse fev 10, 2019 Getting Started: 1 O que é a API do Automação-IOT? 3 1.1 Guia Básico............................................... 3 1.2 FAQ....................................................
JAVASCRIPT. Desenvolvimento Web I
JAVASCRIPT Desenvolvimento Web I JavaScript HTML Conteúdo - ( Markup language) CSS Apresentação (Style Sheet language) JavaScript (Programming language) Uso de JavaScript : Validação de formulários, galerias
Desenvolvimento de Aplicações para Internet
Desenvolvimento de Aplicações para Internet CSS Celso Olivete Júnior olivete@fct.unesp.br HTML Formatando o documento... Formulário Responsável por fazer a interação entre os dados fornecidos pelo usuário
Classe PHP Client. A classe Zend\Http\Client fornece uma interface para realizar pedidos HTTP.
Classe PHP Client A classe Zend\Http\Client fornece uma interface para realizar pedidos HTTP. O método send() é usado para submeter o pedido ao servidor remoto. Estes pedidos retornam um objeto Zend\Http\Response
Laboratório de Programação. Aula 12 Java 5COP088. Aula 12 Exceções Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr
5COP088 Laboratório de Programação Aula 12 Exceções Prof. Dr. Sylvio Barbon Junior 1 Sumário: 1) Manipulação de Exceções; 1) Try e Catch 2) Finally 3) Propagação (Throw e Throws) 2) Erros e Exceções Comuns;
Protocolo Eletrônico ( Acesso Externo )
EMPRESA BRASILEIRA DE CORREIOS E TELÉGRAFOS VICE-PRESIDÊNCIA DE ADMINISTRAÇÃO VIPAD Protocolo Eletrônico ( Acesso Externo ) Guia de Cadastro do Usuário Externo Solicitação de Acesso Setembro / 2018 [ Versão
Versão: 1.2.1_0 - Data da liberação: 15/04/ Relação de mudanças no sistema:
Portal UFGNet Órgão Desenvolvedor: CERCOMP Órgão Responsável: CERCOMP Situação: Em produção Descrição É um PORTAL desenvolvido pela equipe do CERCOMP que inclui o portal do servidor e o portal do aluno,
Sistema NFS-e. 03/2010 Versão 1.3. EDZA Planejamento, Consultoria e Informática S.A.
Sistema NFS-e 03/2010 Versão 1.3 EDZA Planejamento, Consultoria e Informática S.A. Para emissão da Nota Fiscal Eletrônica, o usuário deverá acessar a aplicação através do site da prefeitura clicando no
Para efetuar a configuração de s no painel, acesse o cpanel a partir do link abaixo:
Configuração de Painel Servidor Virtual. e-mail da Loja Para efetuar a configuração de e-mails no painel, acesse o cpanel a partir do link abaixo: https://cpanel.(domínio da sua loja).com.br:2083/ Exemplo:
HTML BÁSICO E TEMPLATE VIEW. Gabrielle Amorim Porto
HTML BÁSICO E TEMPLATE VIEW Gabrielle Amorim Porto HTML BÁSICO E TEMPLATE VIEW Hypertext Markup Language Linguagem de marcação de hipertexto; Descreve a estrutura das páginas Web utilizando tags. HTML
INTRODUÇÃO À INTERNET E À WORLD WIDE WEB
INTRODUÇÃO À INTERNET E À WORLD WIDE WEB CURSO TÉCNICO DE INFORMÁTICA MODALIDADE SUBSEQÜENTE DESENVOLVIMENTO WEB I PROF. ALEXANDRO DOS SANTOS SILVA 1 1 SUMÁRIO Conceitos básicos Histórico Principais modelos
SISTEMA ATENA INSTITUIÇÕES DE ENSINO
SISTEMA ATENA INSTITUIÇÕES DE ENSINO MANUAL DO USUÁRIO 10/10/2017 Sistema Atena - Instituições de Ensino ÍNDICE Introdução... 4 ObJetivos... 4 Funcionalidades... 4 Generalidades... 4 Opções de Menu das
Por Fernando Koyanagi
Por Fernando Koyanagi Características principais Wifi Conectores GPIO Barramento Serial Vários modelos e tamanhos diferentes Montagem ESP8266 na IDE do Arduino É possível utilizar a IDE do Arduino para
IMBARQ Portal imercado. Manual de Usuário
IMBARQ Portal imercado Manual de Usuário Histórico de Versões Data Versão Descrição Autor 09/05/2014 1.0 Criação do documento BM&FBOVESPA 2 Conteúdo 1. INTRODUÇÃO... 4 1.1. O que é o imercado... 4 1.2.
Servidor ou Pensionista: Tutorial da criação de senha no SIGAC/SIGEPE
Servidor ou Pensionista: Tutorial da criação de senha no SIGAC/SIGEPE (1º Tópico) Quem precisa criar senha no Sigac? Todos os servidores (ativos e aposentados) e pensionistas que precisam acessar as funcionalidades
Login. Criar uma pasta Repositories na raiz do projeto. Criar uma classe Funcoes.cs dentro da pasta Repositories.
Criar uma pasta Repositories na raiz do projeto. Login Criar uma classe Funcoes.cs dentro da pasta Repositories. using System; using System.Collections.Generic; using System.Linq; using System.Web; using
F E B A C. Exercício de Fixação 3. FACULDADE DE EDUCAÇÃO DE BACABAL FEBAC Credenciamento MEC/Portaria: 472/07 Resolução: 80/07
F E B A C FACULDADE DE EDUCAÇÃO DE BACABAL FACULDADE DE EDUCAÇÃO DE BACABAL FEBAC Credenciamento MEC/Portaria: 472/07 Resolução: 80/07 Curso: Sistemas para Internet Período: 2 o Disciplina: Fundamentos
Manual Operacional do imercado
Informação Pública 31/8/2016 [data] Conteúdo 1 Introdução... 4 1.1 O que é o imercado... 4 1.2 Abreviações... 4 1.3 Glossário... 5 2 Acesso ao sistema... 5 2.1 Pré-requisitos de software... 5 2.2 Acessando
Configurações para emissão de Nota Fiscal de Serviços de Sapucaia do Sul/RS.
Configurações para emissão de Nota Fiscal de Serviços de Sapucaia do Sul/RS. Birigui SP Março/2018 Sumário 1 INTRODUÇÃO...2 2 CONFIGURAÇÃO...3 2.1.1 Interface Web...3 2.1.2 GigaERP...5 3 VERSIONAMENTO
CSS Cascading Style Sheets
CSS Cascading Style Sheets Linguagem de Folhas de Estilo Introdução Faz parte da versão 4 do html Utilizado para padronizar os componentes html Pode ser utilizado de três formas: Inline quando é utilizada