Drollery Medieval drollery of a knight on a horse

🏆 欢迎来到本站: https://xuchangwei.com/希望这里有你感兴趣的内容

flowery border with man falling
flowery border with man falling

Identity: Authentik

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

官方文档Passwordless

无密码身份认证

配置无密码登录流程

创建流程: 流程与阶段–>流程–>创建

名称: 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)

可以看到在登录首页多了“使用安全密钥” 字样