Explicar "autenticação baseada em declarações" a uma criança de 5 anos

188

Bem, não exatamente para uma criança de 5 anos, mas evite a palavra da moda e as empresas, se possível.

A autenticação baseada em declarações parece ser a última moda agora, mas não consegui encontrar uma explicação simples e prática do que realmente é, como é diferente do que temos agora (presumo "o que temos agora" autenticação baseada em função), quais são os benefícios de usá-la etc.

Anton Gogolev
fonte
1
Eu concordo com @Marnix. Agora que você tem um entendimento básico, pode se relacionar mais facilmente à definição / explicação da Microsoft .
precisa saber é
Também achei este documento simples, se você quiser dar um pouco mais de atenção e tempo. A introdução responde à pergunta, e os diagramas falam mais que mil palavras: download.microsoft.com/download/7/D/0/...
Paweł Bulwan

Respostas:

215

O @Marnix tem uma resposta muito boa, mas para se afastar do aspecto técnico:

A autenticação com base em declarações refere-se à definição de quem você confia para fornecer informações precisas sobre identidade e ao uso apenas dessas informações fornecidas. Meu (o) exemplo a seguir está em um bar. Imagine por um momento que você quer tomar uma cerveja no bar. Em teoria, o barman deve pedir uma prova de idade. Como você prova isso? Bem, uma opção é fazer com que o barman o corte ao meio e conte o número de toques, mas pode haver alguns problemas com isso. A outra opção é escrever o seu aniversário em um pedaço de papel para o qual o barman aprova ou desaprova. A terceira opção é ir ao governo, obter um cartão de identificação e depois apresentá-lo ao barman.

Alguns podem rir da ideia de escrever seu aniversário em um pedaço de papel, mas é isso que acontece quando você autentica usuários no próprio aplicativo, porque depende do barman (ou do seu aplicativo) confiar no pedaço de papel . No entanto, confiamos na afirmação do governo de que o aniversário no ID é válido e o ID é para a pessoa que solicita a bebida. Para todos os efeitos, o barman (ou aplicativo) realmente não se importa com a forma como a autenticação ocorreu devido à confiança. O barman não sabe nada sobre você, exceto sua data de nascimento, porque é tudo o que o barman precisa saber. Agora, o barman pode armazenar informações que eles considerem importantes para eles, como sua bebida favorita, mas o governo não se importa (pois não é a fonte autorizada),

A chave do CBA é "quem é a fonte autorizada da identidade?"

Steve
fonte
20
Excelente analogia! Eu gostaria de poder dar pontos extras para o método "cortar ao meio e contar os anéis" para determinar a idade de uma pessoa. Vou ter que tentar isso. :-)
Keith Robertson
8
Vejo 'para todos os efeitos intensivos' tantas vezes que eu realmente, realmente aprecio quando as pessoas dizem, corretamente, 'para todos os efeitos'
JoeBrockhaus
3
Fácil: explique a eles que analogias sobre tópicos complexos não podem ser facilmente destiladas em conceitos simples, independentemente de quão bem os entendamos. E ... por que diabos uma criança de 5 anos realmente se importaria com a autenticação baseada em declarações?
1313 Steve Steve
2
Eu li este artigo e parece que a autenticação baseada em declarações é um sistema de autenticação de terceiros, como autenticação aberta ou logins sociais, como Conta da Microsoft, Facebook, Twitter, Google. alguém pode me dizer como a autenticação baseada em declarações é diferente da autenticação aberta? porque a autenticação aberta também é um sistema de autenticação de terceiros.
Thomas
1
O @Thomas OAuth é sobre autorização, não autenticação, e isso se transforma em uma conversa totalmente diferente. Eles fornecem informações de identificação, mas a intenção é usar o token para acessar seu serviço, não para identificar o usuário. Uma extensão nesse OpenID que se destina a identificar. Em qualquer um dos casos, a maneira mais simples de pensar sobre isso (se não for 100% preciso) é que eles são apenas implementações do CBA.
29416 Steve
131

(Esta é a minha opinião pessoal sobre isso, outros podem diferir. Poste outros pontos de vista como respostas separadas.)

Identidade / autenticação / autorização baseada em declarações é sobre separar a manutenção de autorizações de usuário e logon de usuário de um aplicativo (web), transformando autenticação / autorização em um serviço (web) separado.

Por exemplo, quando eu navego para um aplicativo Web habilitado para declarações pela primeira vez, ele redireciona meu navegador para um 'serviço de logon' em que confia. Eu vou me autenticar nesse serviço (usando autenticação do Windows, um cartão inteligente ou qualquer outra coisa) e, em resposta, ele envia de volta um 'token', que o navegador envia de volta ao aplicativo Web. Agora, o aplicativo da Web verifica se o token é assinado digitalmente por seu serviço de logon confiável e, em seguida, analisa as 'declarações' no token. Com base exclusivamente nessas alegações, o aplicativo decide qual funcionalidade o usuário é oferecido.

As declarações quase sempre incluem a identidade do usuário, geralmente também há declarações relacionadas à autorização ('esse usuário pode visualizar dados de vendas, mas não atualizá-lo') e, às vezes, outras informações também ('tamanho do sapato = 42').

O ponto principal é que o aplicativo não sabe nem se importa como o usuário foi autenticado, nem como as autorizações são administradas: ele usa apenas as informações das declarações no token assinado para determinar quem é o usuário e / ou o que o usuário pode veja ou faça e / ou qualquer outra informação sobre o usuário.

(Sim, estou assumindo uma criança de 5 anos bastante inteligente e bem informada aqui. :-)

MarnixKlooster ReinstateMonica
fonte
5
São exemplos como 'Faça login no Facebook / Google / ...' exemplos de autenticação baseada em declarações em ação?
Wes
1
Tenho certeza que minha criança de 5 anos entenderia tudo isso.
Sinaesthetic
@ sua pergunta é um pouco vaga. O simples ato de entrar com o facebook ou o google não é um exemplo de autenticação baseada em declarações, não. Eu também argumentaria que a autenticação baseada em declarações não é uma coisa. Seria autorização se alguma coisa. O ponto em que o CBA entraria em ação é durante a etapa de autorização de entrar com esses fornecedores. Quando ele pede permissões e você aceita, ele adiciona escopo ao seu token de acesso. É semanticamente diferente de uma reivindicação, mas é frequentemente usado de maneira muito semelhante.
Sinaesthetic
40

O exemplo do mundo real a seguir é retirado de Um Guia para Identidade Baseada em Declarações e Controle de Acesso (2ª Edição) .

Uma analogia muito familiar é o protocolo de autenticação que você segue sempre que visita um aeroporto . Você não pode simplesmente caminhar até o portão e apresentar seu passaporte ou carteira de motorista. Em vez disso, você deve primeiro fazer check-in no balcão de ingressos. Aqui, você apresenta qualquer credencial que faça sentido. Se você estiver indo para o exterior, você mostra seu passaporte. Para voos domésticos, você apresenta sua carteira de motorista. Depois de verificar se o seu ID de imagem corresponde ao seu rosto ( autenticação ), o agente consulta seu voo e verifica se você pagou por uma passagem ( autorização ). Assumindo que tudo está em ordem, você recebe um cartão de embarque que você leva para o portão.

Um cartão de embarque é muito informativo. Os agentes do portão sabem seu nome e número do passageiro frequente (autenticação e personalização), número do seu voo e prioridade do assento (autorização) e talvez até mais. Os agentes do portão têm tudo o que precisam para realizar seus trabalhos com eficiência.

Há também informações especiais no cartão de embarque. É codificado no código de barras e / ou na tira magnética na parte traseira. Essas informações (como o número de série do embarque) comprovam que o passe foi emitido pela companhia aérea e não é uma falsificação.

Em essência, um cartão de embarque é um conjunto assinado de reivindicações feitas pela companhia aérea sobre você . Ele afirma que você tem permissão para embarcar em um voo específico em um horário específico e sentar-se em um assento específico. Obviamente, os agentes não precisam pensar muito sobre isso. Eles simplesmente validam seu cartão de embarque, leem as reivindicações e permitem que você embarque no avião.

Também é importante observar que pode haver mais de uma maneira de obter o conjunto de reivindicações assinado que é o seu cartão de embarque. Você pode ir ao balcão de passagens no aeroporto ou usar o site da companhia aérea e imprimir seu cartão de embarque em casa. Os agentes do portão que embarcam no voo não se importam com a criação do cartão de embarque; eles não se importam com o emissor que você usou, desde que seja confiável pela companhia aérea. Eles só se preocupam com o fato de ser um conjunto autêntico de reivindicações que lhe dá permissão para entrar no avião.

No software, esse pacote de declarações é chamado de token de segurança . Cada token de segurança é assinado pelo emissor que o criou. Um aplicativo baseado em declarações considera os usuários autenticados se apresentarem um token de segurança assinado e válido de um emissor confiável .

Maria Ines Parnisari
fonte
18

Para um garoto de cinco anos, peça que ele assuma que ele ingressou em uma nova escola assinando o pedido de seus pais. Após a aprovação da administração da escola para sua inscrição, ele recebe um cartão de acesso que contém todas as informações abaixo que podemos chamar de RECLAMAÇÕES para entrar na escola.

  1. NOME do MENINO é BOB.
  2. NOME DA ESCOLA É MONTISSORI HIGH SCHOOL
  3. CLASSE É 8ª CLASSE

No primeiro dia de aula, enquanto ele entra na escola, ele passa o cartão de acesso e os portões se abrem, significa que ele foi RECLAMADO como uma das pessoas da escola. Dessa forma, ele é uma PESSOA AUTENTICADA para entrar na escola.

Depois de chegar à sua turma, ele usou o cartão de acesso para entrar em cada turma, mas às portas da 8ª classe se abriram como alegava ser da 8ª classe.

Na escola, ele só está autorizado a entrar em sua classe, pois agora estuda o 8º padrão. E se ele tentar entrar no 6º Padrão, o professor da escola NÃO O AUTORIZARÁ.

sorrisos1
fonte
3
Isso apenas descreve a noção geral de autenticação e autorização. Não especificamente reivindicação baseada ou de outra forma
Sheepy
Sheepy, certamente as reivindicações são explicadas por ele ser da 8ª série e ter acesso negado à 6ª série?
31515 Ian
1
Eu li este artigo e parece que a autenticação baseada em declarações é um sistema de autenticação de terceiros, como autenticação aberta ou logins sociais, como Conta da Microsoft, Facebook, Twitter, Google. alguém pode me dizer como a autenticação baseada em declarações é diferente da autenticação aberta? porque a autenticação aberta também é um sistema de autenticação de terceiros.
Thomas
9

Tão não técnico quanto possível:

Se você descrevesse algo sobre quem você é e o que podia ver ou fazer, cada uma dessas coisas seria algo que você estava "alegando" ser verdade e, portanto, cada "coisa" nessa lista seria um " afirmação".

Sempre que você disser a alguém algo sobre você ou "reivindicar" que você pode ver ou fazer algo, você entrega a sua lista de reivindicações. Eles verificarão com uma autoridade que suas reivindicações são verdadeiras e, se forem, acreditarão em qualquer coisa nessa lista de reivindicações. Portanto, se você afirma que é Brad Pitt, sua lista de afirmações diz que você é Brad Pitt e foi verificado com a autoridade que todas as suas afirmações são verdadeiras - elas acreditarão que você é Brad Pitt, juntamente com qualquer outra coisa nessa lista.

Reivindicação : o que você afirma ser verdadeiro. Pode ser uma informação ou uma descrição de uma permissão que você alega ter. O sistema ao qual você apresenta suas reivindicações precisa entender apenas o que é / significa e também pode verificar com a autoridade.

Autoridade : o sistema que reúne sua lista de reivindicações e a assina, que basicamente diz "Sob minha autoridade, tudo nesta lista é verdadeiro". Enquanto o sistema que estiver lendo as declarações puder verificar com a autoridade que a assinatura está correta, tudo na lista de declarações será considerado autêntico e verdadeiro.

Além disso, não vamos chamá-lo de "autenticação baseada em declarações"; em vez disso, vamos chamá-lo de "identidade baseada em declarações".

Um pouco mais técnico:

Portanto, agora neste processo, você se autentica usando algum tipo de mecanismo (nome de usuário / senha, segredo do cliente, certificado etc.) e fornece um token que prova que você é quem diz ser. Em seguida, você troca esse token de acesso por um token de ID. Esse processo usará sua identidade para encontrar e criar uma lista de reivindicações, assiná-la e, em seguida, devolver um token de identificação com todas as suas reivindicações.

Como etapa da autorização , dependendo de como é implementado, o recurso analisará seu token de ID (declarações) e verificará se você possui as declarações necessárias para acessar esse recurso.

Por exemplo, se o recurso "CastleBlack / CommandersTower" diz que "você precisa ter acesso ao castelo preto e ser o comandante do lorde, ele analisará sua lista de reivindicações para ver se essas duas coisas são verdadeiras.

Como você vê, "reivindicações" pode ser qualquer coisa. Pode ser um papel, pode ser um fato, pode ser uma bandeira. É apenas uma lista de pares de valores-chave e o "valor" é opcional. Às vezes, é apenas ver se a reivindicação existe:

claims : [
    {"type": "name", "value": "Jon Snow"},
    {"type": "home", "value": "Winterfell, The North, Westeros"},   
    {"type": "email", "value": "[email protected]"},
    {"type": "role", "value": "veteran;deserter;"},
    {"type": "department", "value": "none"},    
    {"type": "allowEntry", "value": "true"},
    {"type": "access", "value": "castleblack;eastwatch;"}
]

Portanto, se Jon se conectasse e tentasse acessar o recurso descrito acima, ele seria negado porque, embora seja quem ele diz ser e tenha acesso ao castelo negro, ele não é mais o comandante do senhor nem tem acesso explícito a a torre do comandante e, portanto, não pode implicitamente entrar na torre do comandante.

Mais especificamente, "CastleBlack" provavelmente seria um escopo [maior], e cada área seria uma permissão específica, mas essa é uma discussão diferente.

Como cada aplicativo lida com o acesso será diferente, mas usará declarações para fazer isso.

Sinaesthetic
fonte
5

Considerando que uma declaração é um atributo que informa algo sobre o usuário (nome, idade, etnia etc.), você trabalha em um serviço de token de segurança para validar essas declarações e também as usa para autorização, além da autenticação.

O trecho a seguir foi retirado da Wikipedia ( http://en.wikipedia.org/wiki/Claims-based_identity ) e é a melhor analogia que encontrei até agora

"Para entender melhor o conceito de serviço de token de segurança, considere a analogia de uma boate com um porteiro. O porteiro quer impedir a entrada de clientes menores de idade. Para facilitar isso, ele solicita que um cliente apresente uma carteira de motorista, cartão de seguro de saúde ou outra identificação (o token) emitida por um terceiro confiável (o serviço do token de segurança), como o departamento de licença de veículo provincial ou estadual, departamento de saúde ou companhia de seguros. A boate é assim aliviada da responsabilidade de determinar a responsabilidade do cliente Só precisa confiar na autoridade emissora (e, é claro, julgar a autenticidade do token apresentado). Com essas duas etapas concluídas, a boate autenticou com êxito o usuário com relação à alegação de que ele é idade legal para beber.

Continuando a analogia, a boate pode ter um sistema de associação e alguns membros podem ser regulares ou VIP. O porteiro pode pedir outro token, o cartão de sócio, que pode fazer outra reivindicação; que o membro é um VIP. Nesse caso, a autoridade emissora confiável do token provavelmente seria o próprio clube. Se o cartão de associado alegar que o usuário é um VIP, o clube poderá reagir de acordo, traduzindo a solicitação de associação VIP autenticada para uma permissão, como o usuário que pode sentar-se na área exclusiva do lounge e receber bebidas gratuitas ".

Paleta
fonte