Coleta avançada de dados de segurança em aplicativos - Amazon Cognito

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Coleta avançada de dados de segurança em aplicativos

A autenticação adaptativa do Amazon Cognito avalia os níveis de risco de tentativa de invasão da conta a partir de detalhes contextuais das tentativas de login dos usuários. Seu aplicativo deve adicionar dados de contexto às solicitações de API para que a segurança avançada do Amazon Cognito possa avaliar os riscos com mais precisão. Dados de contexto são informações como endereço IP, agente do navegador, informações do dispositivo e cabeçalhos de solicitação que fornecem informações contextuais sobre como um usuário se conectou ao seu grupo de usuários.

A responsabilidade central de um aplicativo que envia esse contexto ao Amazon Cognito é EncodedData um parâmetro nas solicitações de autenticação para grupos de usuários. Para adicionar esses dados às suas solicitações, você pode implementar o Amazon Cognito com um SDK que gera automaticamente essas informações para você, ou você pode implementar um módulo para JavaScript iOS ou Android que coleta esses dados. Aplicativos somente para clientes que fazem solicitações diretas ao Amazon Cognito devem implementar SDKs. AWS Amplify Os aplicativos cliente-servidor que têm um servidor intermediário ou componente de API devem implementar um módulo SDK separado.

Nos cenários a seguir, seu front-end de autenticação gerencia a coleta de dados de contexto do usuário sem nenhuma configuração adicional:

  • A interface de usuário hospedada coleta e envia automaticamente dados de contexto para recursos avançados de segurança.

  • Todas as AWS Amplify bibliotecas têm coleta de dados contextuais incorporada em seus métodos de autenticação.

Envio de dados de contexto do usuário em aplicativos somente para clientes com o Amplify

Uma visão geral da coleta de dados para recursos avançados de segurança em um aplicativo Amplify.

Os SDKs do Amplify oferecem suporte a clientes móveis que se autenticam diretamente no Amazon Cognito. Clientes desse tipo fazem solicitações diretas de API às operações públicas de API do Amazon Cognito. Por padrão, os clientes do Amplify coletam automaticamente dados de contexto para recursos avançados de segurança.

Os aplicativos Amplify com JavaScript são uma exceção. Eles exigem a adição de um JavaScript módulo que coleta dados de contexto do usuário.

Normalmente, um aplicativo nessa configuração usa operações de API não autenticadas, como e. InitiateAuthRespondToAuthChallenge O UserContextDataobjeto ajuda a avaliar os riscos com mais precisão nessas operações. Os SDKs do Amplify adicionam informações do dispositivo e da sessão a um EncodedData parâmetro de. UserContextData

Coletando dados de contexto em aplicativos cliente-servidor

Alguns aplicativos têm um nível de front-end que coleta dados de autenticação do usuário e um nível de back-end de aplicativos que envia solicitações de autenticação para o Amazon Cognito. Essa é uma arquitetura comum em servidores web e aplicativos apoiados por microsserviços. Nesses aplicativos, você deve importar uma biblioteca pública de coleta de dados contextuais.

Uma visão geral da autenticação do lado do servidor com recursos de segurança avançados contextualizam os dados em. JavaScript

Normalmente, um servidor de aplicativos nessa configuração usa operações de API autenticadas, como AdminInitiateAuthe. AdminRespondToAuthChallenge O ContextDataobjeto ajuda o Amazon Cognito a avaliar os riscos dessas operações com mais precisão. O conteúdo de ContextData são os dados codificados que o front-end passou para o servidor e detalhes adicionais da solicitação HTTP do usuário para o servidor. Esses detalhes adicionais de contexto, como os cabeçalhos HTTP e o endereço IP, fornecem ao servidor de aplicativos as características do ambiente do usuário.

Seu servidor de aplicativos também pode fazer login com operações de API não autenticadas, como e. InitiateAuthRespondToAuthChallenge O UserContextDataobjeto informa a análise avançada de riscos de segurança nessas operações. As operações nas bibliotecas de coleta de dados de contexto público disponíveis adicionam informações de segurança ao EncodedData parâmetro nas solicitações de autenticação. Além disso, configure seu grupo de usuários para aceitar dados de contexto adicionais e adicionar o IP de origem do usuário ao IpAddress parâmetro deUserContextData.

Para adicionar dados de contexto aos aplicativos cliente-servidor
  1. Em seu aplicativo front-end, colete dados de contexto codificados do cliente com um iOS, Android ou módulo. JavaScript

  2. Passe os dados codificados e os detalhes da solicitação de autenticação para seu servidor de aplicativos.

  3. No seu servidor de aplicativos, extraia o endereço IP do usuário, os cabeçalhos HTTP relevantes, o nome do servidor solicitado e o caminho solicitado da solicitação HTTP. Preencha esses valores com o ContextDataparâmetro da sua solicitação de API para o Amazon Cognito.

  4. Preencha o EncodedData parâmetro de ContextData na sua solicitação de API com os dados codificados do dispositivo que seu módulo SDK coletou. Adicione esses dados de contexto à solicitação de autenticação.

Bibliotecas de dados de contexto para aplicativos cliente-servidor

JavaScript

O amazon-cognito-advanced-security-data.min.js módulo coleta as informações EncodedData que você pode passar para o servidor do aplicativo.

Adicione o amazon-cognito-advanced-security-data.min.js módulo à sua JavaScript configuração. <region>Substitua por um Região da AWS da lista a seguir: us-east-1us-east-2,us-west-2,eu-west-1,eu-west-2, oueu-central-1.

<script src="https://amazon-cognito-assets.<region>.amazoncognito.com/amazon-cognito-advanced-security-data.min.js"></script>

Para gerar um encodedContextData objeto que você possa usar no EncodedData parâmetro, adicione o seguinte à origem do seu JavaScript aplicativo:

var encodedContextData = AmazonCognitoAdvancedSecurityData.getData(_username, _userpoolId, _userPoolClientId);

iOS/Swift

Para gerar dados de contexto, os aplicativos iOS podem integrar o módulo Mobile SDK for iOS AWSCognitoIdentityProviderASF.

Para coletar dados de contexto codificados para segurança avançada, adicione o seguinte trecho ao seu aplicativo:

import AWSCognitoIdentityProviderASF let deviceId = getDeviceId() let encodedContextData = AWSCognitoIdentityProviderASF.userContextData( userPoolId, username: username, deviceId: deviceId, userPoolClientId: userPoolClientId) /** * Reuse DeviceId from keychain or generate one for the first time. */ func getDeviceId() -> String { let deviceIdKey = getKeyChainKey(namespace: userPoolId, key: "AWSCognitoAuthAsfDeviceId") if let existingDeviceId = self.keychain.string(forKey: deviceIdKey) { return existingDeviceId } let newDeviceId = UUID().uuidString self.keychain.setString(newDeviceId, forKey: deviceIdKey) return newDeviceId } /** * Get a namespaced keychain key given a namespace and key */ func getKeyChainKey(namespace: String, key: String) -> String { return "\(namespace).\(key)" }

Android

Para gerar dados de contexto, os aplicativos Android podem integrar o aws-android-sdk-cognitoidentityprovidermódulo -asf do Mobile SDK for Android.

Para coletar dados de contexto codificados para segurança avançada, adicione o seguinte trecho ao seu aplicativo:

UserContextDataProvider provider = UserContextDataProvider.getInstance(); // context here is android application context. String encodedContextData = provider.getEncodedContextData(context, username, userPoolId, userPoolClientId);