Especificações do OpenID Connect publicadas como normas ISO
(self-issued.info)- Nove especificações do OpenID Connect foram publicadas como normas ISO/IEC, colocando o Core 1.0, Discovery, Dynamic Client Registration, especificações de logout e modos de resposta OAuth 2.0 dentro do sistema internacional de normas
- A OpenID Foundation submeteu as especificações à ISO em dezembro de 2023 pelo processo PAS (Publicly Available Specifications) e, depois, concluiu a publicação após a votação de aprovação da ISO
- Com a padronização ISO, a implantação do OpenID Connect pode se tornar mais fácil também em jurisdições que exigem especificações de organismos de padronização reconhecidos por tratados internacionais
- Antes da submissão, o OpenID Connect working group conduziu o processo de aplicação de errata corrections para que a versão ISO incluísse correções conhecidas
- Com base na experiência deste processo PAS, a OpenID Foundation planeja submeter também o FAPI 1.0 e, após a finalização, os conjuntos de especificações eKYC-IDA e FAPI 2.0 para publicação pela ISO
Especificações publicadas como normas ISO/IEC
- As especificações relacionadas ao OpenID Connect publicadas desta vez como normas ISO/IEC são nove
- ISO/IEC 26131:2024 — Information technology — OpenID connect — OpenID connect core 1.0 incorporating errata set 2
- ISO/IEC 26132:2024 — Information technology — OpenID connect — OpenID connect discovery 1.0 incorporating errata set 2
- ISO/IEC 26133:2024 — Information technology — OpenID connect — OpenID connect dynamic client registration 1.0 incorporating errata set 2
- ISO/IEC 26134:2024 — Information technology — OpenID connect — OpenID connect RP-initiated logout 1.0
- ISO/IEC 26135:2024 — Information technology — OpenID connect — OpenID connect session management 1.0
- ISO/IEC 26136:2024 — Information technology — OpenID connect — OpenID connect front-channel logout 1.0
- ISO/IEC 26137:2024 — Information technology — OpenID connect — OpenID connect back-channel logout 1.0 incorporating errata set 1
- ISO/IEC 26138:2024 — Information technology — OpenID connect — OAuth 2.0 multiple response type encoding practices
- ISO/IEC 26139:2024 — Information technology — OpenID connect — OAuth 2.0 form post response mode
Submissão PAS e aprovação ISO
- A submissão das especificações OpenID Connect em nome da OpenID Foundation foi feita em dezembro de 2023 na forma de PAS (Publicly Available Specifications)
- Após a votação de aprovação da ISO, essas especificações foram publicadas como normas ISO/IEC
- Como a ISO é um dos organismos de padronização reconhecidos por tratados internacionais, isso pode ampliar as possibilidades de adoção do OpenID Connect em jurisdições que exigem legalmente o uso de normas desses organismos
Correções incluídas na versão ISO
- Antes da submissão, o OpenID Connect working group conduziu o processo de aplicação de errata corrections às especificações
- Como resultado, as correções conhecidas foram refletidas na versão ISO
Próximos planos de submissão à ISO
- Depois de concluir uma vez o processo de submissão ISO PAS, a OpenID Foundation planeja submeter outros conjuntos de especificações finais para publicação pela ISO
- O próximo alvo inclui a especificação FAPI 1.0
- As especificações eKYC-IDA e FAPI 2.0 estão previstas para submissão após sua finalização
1 comentários
Opiniões no Hacker News
Mesmo tendo me envolvido bastante com OpenID há cerca de 17 anos (https://simonwillison.net/search/?tag=openid&year=2007), levei um tempo constrangedor para entender que o OpenID Connect tem pouquíssima relação com a ideia original do OpenID de que “o identificador é uma URL e você prova a propriedade dessa URL”
OpenID Connect é, na prática, mais próximo de uma evolução do OAuth
Vejo o OpenID Connect não tanto como uma evolução do OAuth, mas, em termos de visão e espírito, mais como uma evolução do OpenID. Assim como o OpenID, o OIDC foca em identificação e autenticação de usuários, mas, diferentemente do OpenID, não recriou um fluxo de autenticação totalmente novo; ele atingiu seu principal objetivo ao colocar um fluxo de autenticação sobre a especificação OAuth, que já vinha sendo usada indevidamente para autenticação
Por isso, mesmo sistemas cujo objetivo não é conformidade com OIDC muitas vezes seguem partes do OIDC. Se uma parte do padrão OIDC já oferece o que é necessário, não há motivo para reinventar a roda
OpenID Connect é uma extensão que adiciona uma camada de autenticação ao OAuth2 (RFC 6749), e OAuth2 é um framework de autorização para conceder permissões
Por outro lado, OAuth 1.0/1.0a e OpenID 1/2 são protocolos que só têm nomes parecidos, mas não têm relação entre si e não são compatíveis, então em 2024 são em grande parte irrelevantes. É preciso ter cuidado ao pesquisar
Isso não é uma coisa boa sob nenhum aspecto. Primeiro, padrões pagos, que exigem pagamento para serem lidos, são realmente ruins
Em segundo lugar, eu gostaria que houvesse mais esforço em projetar padrões e implementações que, quando necessários, não se transformem em um poço sem fim de perda de tempo
Dito isso, não sei bem qual é a vantagem de receber um número de padrão ISO em comparação com publicar um documento HTML na internet
Padrões são bons, mas é irritante que grandes organizações de padronização como a ISO cobrem dinheiro para você ver os padrões
Imagino que seja porque algumas empresas ou setores exigem um padrão “de verdade” dessas organizações, em vez de algo criado pelo IETF ou por algum grupo hippie imundo de open source
Por isso, se o OpenID Connect for publicado com um número ISO, a adoção ficará mais fácil em alguns projetos. Claro que o OpenID Connect em si continuará podendo ser lido e usado gratuitamente, mas as pessoas que estão nas situações acima passam a ter uma opção mais fácil
A ISO é um lixo não livre e não ajuda o ecossistema de software
Basta olhar para a ISO 8601: ela é complexa demais, muitas vezes não é implementada corretamente porque os mantenedores usaram rascunhos gratuitos, e, na prática, nem resolve nada direito. Por exemplo, ela não consegue representar horário de relógio de parede, o que causa problemas com datas futuras em que o fuso horário pode mudar
Já trabalhei com mp4 antes e descobri que havia mudanças na stack da Apple, então a ISO sozinha não era suficiente
A crítica geralmente acaba em hipóteses como mudanças de horário de verão. É comum ouvir algo como: “quero especificar 14:00 no horário local de Absurdistan daqui a 4 anos, seja qual for sua relação com UTC, mas não consigo”. Mas, se levarmos a hipótese um pouco mais longe, Absurdistan pode anexar territórios ultramarinos, entrar em uma aliança ou alterar seus fusos horários e o horário de verão
Pensando no problema, a própria definição de horário local pode mudar; portanto, a menos que você defina exaustivamente todas as mudanças possíveis, é impossível especificar um horário local futuro. No fim, é preciso fixar um número futuro de tiques de relógio atômico (TAI) e interpretá-lo como horário local no momento de uso, ou especificar um horário fixo e interpretá-lo como horário local no momento de uso
Também me pergunto se a nova API JS Temporal lida com isso. Parece que ela foi bem fundo no assunto
Padrões pagos para leitura, como os da ISO, atrapalham ativamente o progresso da humanidade. Eu preferiria que esse tipo de prática não fosse incentivado
Entendo que o rascunho final e o padrão oficial são praticamente iguais em termos de conteúdo efetivo. Imagino que o rascunho do padrão OIDC também esteja publicado em algum lugar
É estranho dizer que esses engenheiros estão criando progresso para a humanidade e, ao mesmo tempo, prejudicando ativamente o progresso da humanidade
Provisionamento de identidade é um monstro que nunca deveria ter sido inventado
Em meados dos anos 2000, eu era fã a ponto de operar meu próprio servidor OpenID, mas não percebia o quanto todo esse conceito era fundamentalmente falho
Identidade é um atributo inalienável inerente ao indivíduo, não algo que outro indivíduo, uma empresa/site, governo etc. possa “fornecer”. Eles só podem fornecer credenciais para comprová-la, como emitir um passaporte
Pelo menos o WebAuthn acertou essa parte
Algumas identidades eu uso em lugares suficientes para que seja difícil negar, para certos atores, que elas são minhas, mas mesmo nesse caso os atores que viram essa identidade e conseguem provar que sou eu são apenas um pequeno subconjunto
Ainda existem emissores OIDC independentes fora de Google, MS e Apple onde se possa criar uma conta?
Um tempo atrás eu queria criar uma conta no Tailscale sem usar uma conta do GitHub, mas não consegui
Acho que antigamente openid.net e Ubuntu One ofereciam esse tipo de serviço, mas pelo que sei foram descontinuados
Dito isso, os custos de segurança e suporte necessários para esse tipo de serviço são altos; especialmente oferecê-lo de graça não é muito viável para organizações pequenas. As economias de escala que tornam isso possível são grandes, e funcionam especialmente bem quando empresas grandes pagam por produtos corporativos
OpenID Connect é um protocolo bastante simples. Li a especificação (https://openid.net/specs/openid-connect-core-1_0.html) e consegui entender a maior parte em cerca de um dia
Para quem não quer ler a especificação, também escrevi um tutorial abrangente sobre como implementar um cliente OpenID com requisições HTTP simples (https://spapas.github.io/2023/11/29/openid-connect-tutorial/)
Os exemplos usam Python, mas não deve ser difícil implementar na linguagem que você quiser. A maior parte da complexidade está em decodificar e validar tokens JWT
Estou usando esse cliente escrito à mão em um projeto de produção real há cerca de um ano para autenticação com Keycloak, e tudo está funcionando perfeitamente
PS: sei que meu site tem anúncios demais. Infelizmente não tive tempo de configurar o Google Ads direito e também não encontrei uma alternativa melhor. Ao ler, é só usar um bloqueador de anúncios
Mas é melhor tomar cuidado com expressões subjetivas como simples. Se o leitor achar difícil e o autor disser que é simples, isso pode ser bastante intimidador
Ainda assim, não estou convencido de que OIDC seja fácil. O Keycloak esconde uma complexidade enorme, e os desenvolvedores não fizeram isso por tédio. Por exemplo, há muitas configurações diferentes de timeout: timeout de SSO, timeout de cliente, timeouts de vários tokens etc.
A monetização e a operação das organizações em torno dos padrões ISO, no geral, parecem muito suspeitas
Um truque menos conhecido: dá para procurar versões mais baratas dos padrões no simpático site estoniano https://evs.ee. Eles frequentemente criam versões próprias com conteúdo quase igual ao original. Infelizmente, neste caso, parece que oferecem apenas o padrão real por um preço parecido https://www.evs.ee/en/search?OnlySuggestedProducts=false&que...
Vale a pena ficar de olho no site para ver se depois aparece uma versão própria com preço melhor. Normalmente o preço fica em torno de 10% do original. Mais um dado a favor da Estônia fazendo coisas legais
Como trabalho com conformidade regulatória de dispositivos médicos, lido com organizações de padronização bastante suspeitas com frequência https://openregulatory.com/accessing-standards/
Já ouvi todos os argumentos comuns, como “padronização custa dinheiro” e “essas organizações fazem um bom trabalho”, mas não concordo nem um pouco. Se algo é um padrão, acho que ele se torna parecido com uma lei. As pessoas precisam poder cumpri-lo e, para isso, precisam ter acesso livre a ele. O advogado-geral da UE parece concordar https://openregulatory.com/maybe-eu-standards-are-becoming-f...
Há muitas padronizações que não precisam vender PDFs de forma suspeita. ECMAScript e ANSI C vêm à mente, e a lista continua
Transformar isso em uma publicação ISO vira um escudo para fugir de responsabilidade do ponto de vista dos departamentos de compras
Afinal, ninguém nunca foi demitido por exigir conformidade com um pacote de padrões ISO