Identity: Authentik
- TAGS: Identity
Authentik 是一款以安全为核心构建的身份提供商 (IdP) 和单点登录 (SSO) 解 决方案,强调灵活性、多功能性和易用性。适用于各种类型的环境,包括网站管 理员、应用程序开发人员和安全工程师。可以将 Authentik 用于现有环境,以 支持新协议,支持所有主流提供商,免费版本支持OIDC, SAML, LDAP, SCIM, RADIUS, and Proxy
与其他产品对比: https://goauthentik.io/
安装
建议4G内存
初始化配置
- 设置,头像中去掉gravatar,不缓存头像。
界面配置
在media中上传一些自定义背景、logo图片
sudo chown -R 1000:1000 media/ sudo chown -R 1000:1000 custom-templates/ sudo chmod -R ug+rwx media/ sudo chmod -R ug+rx certs/
系统–>品牌
- 标题: AUTH
- Logo: /media/xxx.svg
- 网站图标: /media/xxx.png
流程与阶段–>流程
- 修改登录流程 Welcome to authentik, 修改标题,修改背景,修改布局
认证集成
官方文档:https://docs.goauthentik.io/integrations/
应用程序
- 应用程序:程序信息,用于访问、导航
- 提供程序:统一认证登录用
SAML认证
- 创建证书:
- 系统–>证书–>生成证书 100年证书,证书用于SAML协议进行签名。
- 应用程序, 提供程序
Grafana
authentik
创建应用程序
名称: grafana-local Slug: grafana-local 组:Monitor 启动URL:http://10.0.0.131:3000/ 勾选在新标签页中打开 图标:xxx.svg
创建提供程序-OAuth2/OpenID Provider
名称: grafana-local 授权流程: explicit(弹窗确认), implicit(隐式确认) 重定向 URI/Origin(正则):http://10.0.0.131:3000/login/generic_oauth
应该程序与提供程序关联
- 打开对应应用程序–>提供程序
创建权限组
Grafana Admins Grafana Editors Grafana Viewer
创建用户: 目录–>用户–>设置密码–>加入对应grafana组
用户名:[email protected] 名称:my test 邮箱:[email protected]
用户显示程序权限
- 应用程序–>应用程序–>策略/组/用户绑定–>绑定已有组Grafana Editors/Grafana Admins/Grafana Viewer
grafana
grafana.ini
[server] root_url = http://10.0.0.131:3000 [auth.generic_oauth] name = OAuth enabled = true client_id = NpehHhx7ahXFpjQD5mKboE3h4uwNnxo8og7WG3bc client_secret = zhKxvoP2jv2vGat8J5EmjW7i8Ioi76aUr92amhkWahSn6edz2k9CAHmKAeWxd8QJulZJf4vmcDxxbyTi0Km5Bx71OOtxTIo2Wp7kxCf5DozWceEpcLC6id8BJZFyBdg9 scopes = openid email profile auth_url = http://10.0.0.131:9000/application/o/authorize/ token_url = http://10.0.0.131:9000/application/o/token/ api_url = http://10.0.0.131:9000/application/o/userinfo/ # Optionally map user groups to Grafana roles role_attribute_path = contains(groups, 'Grafana Admins') && 'Admin' || contains(groups, 'Grafana Editors') && 'Editor' || 'Viewer' signout_redirect_url = http://10.0.0.131:9000/application/o/grafana-local/end-session/
打开authentik对应的提供程序详情,复制对应信息。
gitlab
SAML认证
创建证书:
- 系统–>证书–>生成证书 saml-gitlab 100年证书,证书用于SAML协议进行签名。
通过向导创建
- 应用程序详情 - 名称:gitlab-local 下一步 - 提供程序类型 - SAML 下一步 - 提供程序配置 - 权限流程 explicit - ACS URL: https://gitlab.company/users/auth/saml/callback - Audience: https://gitlab.company - 颁发者: https://gitlab.company - 程序绑定: 重定向 - 高级协议设置: 签名证书(saml-gitlab) - 提交
gitlab
- 证书指纹:系统–>证书–>证书指纹SHA1。 如
- SSO URL: 提供程序–>详情–>SSO URL(重定向)
gitlab_rails['omniauth_enabled'] = true gitlab_rails['omniauth_allow_single_sign_on'] = ['saml'] gitlab_rails['omniauth_sync_email_from_provider'] = 'saml' gitlab_rails['omniauth_sync_profile_from_provider'] = ['saml'] gitlab_rails['omniauth_sync_profile_attributes'] = ['email'] gitlab_rails['omniauth_auto_sign_in_with_provider'] = 'saml' gitlab_rails['omniauth_block_auto_created_users'] = false gitlab_rails['omniauth_auto_link_saml_user'] = true gitlab_rails['omniauth_providers'] = [ { name: 'saml', args: { assertion_consumer_service_url: 'https://<gitlab.company>/users/auth/saml/callback', # Shown when navigating to certificates in authentik idp_cert_fingerprint: '4E:1E:CD:67:4A:67:5A:E9:6A:D0:3C:E6:DD:7A:F2:44:2E:76:00:6A', idp_sso_target_url: 'https://authentik.company/application/saml/<gitlab application slug>/sso/binding/redirect/', issuer: 'https://gitlab.company', name_identifier_format: 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', attribute_statements: { email: ['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress'], first_name: ['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name'], nickname: ['http://schemas.goauthentik.io/2021/02/saml/username'] } }, label: 'SSO Auth' } ]
多因素身份验证
在默认登录配置中已经配置了mfa多因素身份认证。default-authentication-flow–>阶段绑定–>30 default-authentication-mfa-validation
可用于进行身份验证的设备类型
静态令牌 TOTP 身份验证器 #6位身份令牌 WebAuthn 身份验证器 #支持Webauthn设备 Duo 身份验证器 #思科方案 基于短信的身份验证器
登录界面点击齿轮(设置)–>MFA设备
静态令牌
会给出6个密码。每次登录时只要输入6个密码中的一个即可。第个密码只能用一次。用于密码失效场景,不是长期验证方案。
TOTP 身份验证器
动态身份验证,每30秒会刷新一个6位密码。目前主流方案。 需要下载Microsoft 身份验证器、Google 身份验证器或您设备上的其他身份验证器应用扫描上面的二维码,然后在下方输入设备上显示的代码,以完成 MFA 设备设置。 或者复制二维码令牌并使用Chrome浏览器插件bitwarden密码管理器保存(需要付费)。或者其他插件
WebAuthn 身份验证器
- iPhone、iPad或者Android设备 - 安全密钥 - 此Windows设备
无密码登录Passwordless
无密码身份认证
- 支持WebAuthn的设备
- 写登录逻辑跳过密码阶段
配置无密码登录流程
创建流程: 流程与阶段–>流程–>创建
名称: passwordless-webauthn-flow 标题: Passwordless Flow 指定: 身份验证
配置流程:
- 阶段绑定 - 创建与绑定阶段 选择类型: Authenticator Validation Stage 创建Authenticator Validation Stage: 名称: passwordless-auth-valid-stage 设备类型: WebAuthn 身份验证器 未配置操作: 强制用户配置身份验证器 配置阶段: default-authenticator-webauthn-setup WebAuthn 用户验证: 必须进行用户验证 创建绑定 顺序: 10 - 绑定已有阶段。 用于绑定用户登录阶段 阶段: default-authentication-login 顺序: 20
登录流程绑定到页面
修改默认登录流程:流程-->default-authentication-flow - 阶段绑定,编辑“default-authentication-identification” 流程设置-->无密码流程-->passwordless-webauthn-flow (passwordless-webauthn-flow)
可以看到在登录首页多了“使用安全密钥” 字样