claromes.com

[PoC] Single Sign-On para o Manual do Usuário

Prova de Conceito: autenticar o usuário no Mastodon via WordPress

[PoC] Single Sign-On para o Manual do Usuário

Protocolos

  • SAML
  • OpenID Connect (OIDC)

Gerenciadores de IdP

  • WordPress (via plugin)
  • Keycloak
  • Authentik

Aplicações


  1. WordPress
  2. Mastodon

Configurações

  • WordPress ("Login using WordPress Users/ SAML" plugin):
Issuer: https://<wordpress-url>/wp-content/plugins/miniorange-wp-as-saml-idp/
ACS: https://<service-provider-url>/auth/auth/saml/callback
NameID format: urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
Assertion Signed: check
Target/ Login: <wordpress-url>
Mapping:
    - user_login
  • Keycloak:
docker run --name keycloak_test -p 8080:8080 \
    -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin \
    quay.io/keycloak/keycloak:latest \
    start-dev
  • Authentik:
# docker-compose.yml
sudo apt-get install -y pwgen

echo "PG_PASS=$(pwgen -s 40 1)" >> .env
echo "AUTHENTIK_SECRET_KEY=$(pwgen -s 50 1)" >> .env
echo "AUTHENTIK_ERROR_REPORTING__ENABLED=true" >> .env

docker-compose pull
docker-compose up -d
  • Mastodon:
# SAML setup
SAML_ENABLED=true
SAML_DISPLAY_NAME=<btn-text-here>
SAML_ACS_URL=<acs-url>
SAML_ISSUER=<issuer-url>
SAML_IDP_SSO_TARGET_URL=<login-url>
SAML_IDP_CERT=-----BEGIN CERTIFICATE-----END CERTIFICATE-----
SAML_NAME_IDENTIFIER_FORMAT=urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
SAML_SECURITY_WANT_ASSERTION_SIGNED=true
SAML_SECURITY_ASSUME_EMAIL_IS_VERIFIED=false
SAML_ATTRIBUTES_STATEMENTS_EMAIL=email
SAML_ATTRIBUTES_STATEMENTS_UID=uid
SAML_ATTRIBUTES_STATEMENTS_FIRST_NAME=first_name
SAML_ATTRIBUTES_STATEMENTS_LAST_NAME=last_name

ou

# OIDC setup
OIDC_ENABLED=true
OIDC_DISPLAY_NAME=<btn-text-here>
OIDC_DISCOVERY=true
OIDC_ISSUER=<issuer-url>
OIDC_AUTH_ENDPOINT=<auth-url>
OIDC_TOKEN_ENDPOINT=<token-url>
OIDC_USER_INFO_ENDPOINT=<user-info-url>
OIDC_END_SESSION_ENDPOINT=<logout-url>
OIDC_SCOPE=openid,profile,email
OIDC_UID_FIELD=preferred_username
OIDC_CLIENT_ID=<client-id>
OIDC_CLIENT_SECRET=<client-secret>
OIDC_REDIRECT_URI=https://<mastodon-url>/auth/auth/openid_connect/callback
OIDC_SECURITY_ASSUME_EMAIL_IS_VERIFIED=true

Resultados


WordPress IdP

Prós

  • Facilidade de implementação
  • Versão gratuita
  • Código aberto

Contras

  • Pouca/ nenhuma configuração de segurança
  • Versão premium paga (até 100 usuários $500)
  • Somente protocolo SAML
  • Configuarções avançadas bloqueadas na versão gratuita

Keycloak

Prós

  • Protocolos SAML e OIDC
  • Código aberto
  • Self-hosted
  • Facilidade de implementação para testes
  • Boa comunidade

Contras

  • Implementação em produção complexa

Authentik

Prós

  • Protocolos SAML, OIDC, LDAP
  • Código aberto
  • Self-hosted
  • Facilidade de implementação para testes e produção
  • Foco em usabilidade

Contras

  • Produto novo (primeiro release em 2020)

Considerações


O WordPress como gerenciador de IdP funcionaou bem, porém o plugin é limitado, impossibilitando implemetar mais de um protocolo em diversos provedores de serviços (Miniflux, por exemplo, não usa SAML).

O Aunthentik se mostrou como melhor alternativa para o uso de SSO, fácil de implementar, em constante desenvolvimento, porém a autenticação e banco de dados não será via WordPress. Essa opção seria uma alternativa mais segura e mais customizável.

Referências


WordPress:
wordpress.org/plugins
oa.dnc.global
github.com/oidc-wp
plugins.miniorange.com

Keycloat:
puppeteers.net
mastertheboss.com
keycloak.org/server
keycloak.org/docs

Authentik:
blog.cubieserver.de
goauthentik.io/docs

Mastodon:
docs.joinmastodon.org
github.com/mastodon
blog.rosenberg-watt.com

Originally published at: github.com


Claromes


Comments? Ping me on Mastodon, Bluesky or Matrix
Tags: SSO · wordpress · mastodon · português brasileiro · poc
Share: Mastodon · Bluesky · Órbita · Hacker News · Email