[PoC] Single Sign-On para o Manual do Usuário
Prova de Conceito: autenticar o usuário no Mastodon via WordPress
Protocolos
- SAML
- OpenID Connect (OIDC)
Gerenciadores de IdP
- WordPress (via plugin)
- Keycloak
- Authentik
Aplicações
- WordPress
- 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