Perguntas frequentes para App ID

Esta Pergunta mais frequente fornece respostas às perguntas comuns sobre o serviço IBM Cloud® App ID.

Por que preciso colocar meu URI de redirecionamento na lista de permissões?

Um URI de redirecionamento é o terminal de retorno de chamada de seu aplicativo. Quando coloca o seu URI na lista de permissões, você está dando ao App ID o OK para enviar seus usuários para esse local. No tempo de execução, o App ID valida o URI em sua lista de permissões antes de redirecionar o usuário. Esse processo pode ajudar a evitar ataques de phishing e diminui a possibilidade de que um invasor possa ter acesso aos tokens do seu usuário. Para obter mais informações sobre URIs de redirecionamento, consulte Incluindo URIs de redirecionamento.

Não inclua quaisquer parâmetros de consulta em sua URL. Eles são ignorados no processo de validação. URL de exemplo: http://host:[port]/path

Como a criptografia funciona no App ID?

Verifique a tabela a seguir para obter respostas para as perguntas mais comuns sobre a criptografia.

Perguntas frequentes sobre como App ID lida com a criptografia
Pergunta Resposta
Por que você usa criptografia? Uma maneira que protegemos as informações dos nossos usuários é criptografando os dados do cliente em repouso e em trânsito. O serviço criptografa os dados do cliente em repouso com chaves por locatário e impõe o TLS 1.2+ em todos os segmentos de rede.
Quais algoritmos são usados no App ID? O serviço usa AES e SHA-256 com salteamento.
Você usa módulos ou provedores de criptografia de origem pública ou de software livre? Você já expõe funções de criptografia? O serviço usa bibliotecas Java avax.crypto, mas nunca expõe uma função de criptografia.
Como as chaves são armazenadas? As chaves são geradas e criptografadas com uma chave mestra que é específica para cada região e, em seguida, armazenadas localmente. As chaves mestras são armazenadas no Key Protect. Cada região tem sua própria chave de raiz de confiança que é armazenada no Key Protect, que é suportado pelo HSM. Cada instância de serviço (locatário) tem sua própria criptografia de dados e chaves de assinatura de token, que são criptografadas usando a confiança de raiz de chave da região.
Qual é a segurança da chave que você usa? O serviço usa 16 bytes.
Você chama alguma API remota que exponha recursos de criptografia? Não, não temos.

Qual sincronização de clock é usada pelo App ID?

O App ID é executado na IBM Cloud, que usa um servidor NTP interno: servertime.service.softlayer.com.

A sincronização do seu aplicativo com a fonte de tempo do App ID depende de qual ambiente está sendo usado para executar o seu aplicativo.

  • Se o seu aplicativo estiver em execução na IBM Cloud Classic Infrastructure, configure os seus servidores NTP para servertime.service.softlayer.com.
  • Se o seu aplicativo estiver em execução na IBM Cloud VPC Infrastructure, configure os seus servidores NTP para time.adn.networklayer.com.
  • Se o seu aplicativo não estiver em execução no IBM Cloud, você não terá acesso a esses servidores de horário. Neste caso, configure os seus servidores NTP para time-a.nist.gov ou time-b.nist.gov.

Qual é a diferença entre App ID e Keycloak?

O App ID e o Keycloak podem ser usados para incluir autenticação em aplicativos e serviços seguros. A principal diferença entre as duas ofertas é como elas são empacotadas.

O Keycloak é empacotado como um software, o que significa que você, como desenvolvedor, é responsável por manter a funcionalidade do produto depois de fazer download dele. Você é responsável pela hospedagem, alta disponibilidade, conformidade, backups, proteção de DDoS, balanceamento de carga, firewalls da web, bancos de dados e mais.

O App ID é uma oferta totalmente gerenciada fornecida "como um serviço". Isso significa que a IBM cuida da operação do serviço, lida com conformidade, disponibilidade em várias zonas, SLA e muito mais. O App ID também possui uma experiência integrada com a Plataforma IBM Cloud, que inclui tempos de execução nativos e serviços como o Kubernetes Service, Cloud Functions e Activity Tracker.

É possível usar o mesmo ID do cliente em mais de um aplicativo?

Embora você tecnicamente _can_ use as mesmas credenciais em mais de um aplicativo, é altamente recomendável que você não faça isso por vários motivos. Em primeiro lugar, porque, quando você está compartilhando seu ID nos aplicativos, qualquer tipo de ataque ou comprometimento afeta todo o seu ambiente em vez de apenas um aplicativo. Por exemplo, se você estiver usando o seu ID em três aplicativos e um deles ficar comprometido, todos os três ficarão comprometidos. Um invasor é capaz de personificar qualquer um dos seus aplicativos. O segundo motivo é que quando você está usando o mesmo ID do cliente em vários aplicativos, não há como diferenciar os aplicativos. Por exemplo, não é possível dizer qual app foi usado para gerar um token.

Como atualizar meu aplicativo para usar uma nova instância de serviço sem perder nenhum dado

É possível migrar as informações de uma instância do App ID para outra.

  1. Crie uma instância do serviço.
  2. Duplique a sua configuração do provedor de identidade usando a GUI.
  3. Migrar os seus perfis do usuário. Os usuários conhecidos são exportados como um objeto JSON. Os usuários anônimos não podem ser migrados. É possível optar por importar o objeto inteiro na nova instância ou dividi-lo e dividir os usuários conforme julgar conveniente, caso você tenha mais de uma instância. Para o Cloud Directory, consulte Migrando usuários. Para provedores de identidade federados, use as etapas a seguir.
  4. Crie credenciais do aplicativo para chamar a nova instância de serviço.
    1. No painel de serviço, navegue até a aba Aplicativos.
    2. Clique em Incluir aplicativo e forneça um nome ao seu aplicativo. Em seguida, clique em Salvar.
    3. Clique em Visualizar credenciais na tabela e copie a saída.
    4. Cole as suas novas credenciais em seu aplicativo.
  5. Atualize seu aplicativo para usar as novas credenciais, incluindo qualquer URL.
  6. Dependendo de sua configuração, talvez seja necessário reimplementar ou desvincular e religar o seu aplicativo.

O App ID pode ajudar a configurar o logout?

Dependendo de como você configura o seu aplicativo, o App ID pode ajudar a facilitar uma funcionalidade de logout para seus usuários. Confira a tabela a seguir para ver onde a funcionalidade para logout está disponível.

Opções de funcionalidade de logout
Descrição
SDKs do App ID Os SDKs do App ID possuem uma funcionalidade de logout integrada.
SSO do Cloud Directory[1] App ID fornece uma funcionalidade de logout para o recurso SSO do Cloud Directory.
Ingresso O Ingress fornece uma funcionalidade de logout.
Istio O adaptador Istio é configurado para fornecer a funcionalidade de logout por meio da OIDC.

Configurando o logout

Para configurar o logout, você deve configurar o seu aplicativo para enviar uma solicitação para o seu provedor de identidade. Em seguida, para redirecionar o usuário para uma área de seu aplicativo que não requer autenticação. Na maioria dos casos de uso, uma sessão de servidor de aplicativos pode ser definida pelos SDKs do App ID, Ingress ou Istio que funcionam em parceria com um provedor de identidade federado como SAML ou Cloud Directory para ativar autenticação e autorização.

No exemplo de HTML a seguir, um SDK do App ID SDK é usado para configurar logout. Mas, se você estiver trabalhando com outra opção, será possível usar esse fragmento como um guia e atualizá-lo para se ajustar às suas necessidades.

<script>
  var ticker = setInterval(tick, 1000);
  var counter = 5;
  function tick() {
    var timerDiv = document.getElementById("timer");
    if (counter > 0) {
      timerDiv.innerText = "Logged out. Redirecting back in " + (counter--) + " seconds.";
    } else {
      document.location = "./appid_logout";
    }
  } </script>
<iframe height="0" width="0" src="https://login.microsoftonline.com/common/wsfederation?wa=wsignout1.0"></iframe>

  1. Todos os URLs de redirecionamento usados com o recurso SSO do Cloud Directory devem ser adicionados à lista de permissões de logout URL na interface do usuário App ID. ↩︎