前言:

前一段时间,我出了一篇authelia的部署教程,今天在补一个nextcloud的关联教程,就当扩展一下authelia的用处把。

教程:

两个平台部署教程,可以在本站,或者其他地方获取到安装教程,我这里就不在安装上面多说了。

我们需要在nextcloud上安装Openid connect插件。

在搜索的对话框里输入OpenID Connect Login,搜索到内容后,直接安装并启用就可以了。

找到nextcloud容器映射的配置文件夹内找到config.php在文件内添加下面的内容

  'allow_user_to_change_display_name' => false,
  'lost_password_link' => 'disabled',
  'oidc_login_provider_url' => 'https://auth.example.com',
  'oidc_login_client_id' => 'nextcloud',
  'oidc_login_client_secret' => 'passwd',
  'oidc_login_auto_redirect' => false,
  'oidc_login_end_session_redirect' => false,
  'oidc_login_button_text' => 'Log in with Authelia',
  'oidc_login_hide_password_form' => false,
  'oidc_login_use_id_token' => true,
  'oidc_login_attributes' => 
  array (
    'id' => 'preferred_username',
    'name' => 'name',
    'mail' => 'email',
    'groups' => 'groups',
  ),
  'oidc_login_default_group' => 'oidc',
  'oidc_login_use_external_storage' => false,
  'oidc_login_scope' => 'openid profile email groups',
  'oidc_login_proxy_ldap' => false,
  'oidc_login_disable_registration' => false,
  'oidc_login_redir_fallback' => false,
  'oidc_login_alt_login_page' => 'assets/login.php',
  'oidc_login_tls_verify' => true,
  'oidc_create_groups' => false,
  'oidc_login_webdav_enabled' => false,
  'oidc_login_password_authentication' => false,
  'oidc_login_public_key_caching_time' => 86400,
  'oidc_login_min_time_between_jwks_requests' => 10,
  'oidc_login_well_known_caching_time' => 86400,
  'oidc_login_update_avatar' => false,

配置部分标注红色的部分,oidc_login_provider_url是authelia访问的地址,oidc_login_client_secret可以理解为是一个密码,可以使用

tr -cd '[:alnum:]' < /dev/urandom | fold -w "64" | head -n 1 | tr -d '\n'在ssh窗口输入就可以得到密码粘贴到oidc_login_client_secret的配置引号内,到此nextcloud配置部分就结束了。
authelia部分,可能会稍微复杂一些,我们需要使用openssl生成一个key然后写入到authelia的配置文件内。
打开SSH窗口,输入命令:
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
这将生成一个 2048 位的 RSA 私钥,并将其保存在 private_key.pem 文件中。
生成公钥:从私钥中提取公钥部分。执行以下命令来生成公钥文件:
openssl rsa -pubout -in private_key.pem -out public_key.pem
这将从私钥中提取公钥,并将其保存在 public_key.pem 文件中。
准备 PEM 格式的私钥:将私钥转换为 Authelia 支持的 PEM 格式。执行以下命令:
openssl rsa -in private_key.pem -outform PEM -out issuer_private_key.pem
这将将私钥转换为 PEM 格式,并将其保存在 issuer_private_key.pem 文件中。该文件即为 identity_providers.oidc.issuer_private_key 的值。
使用cat命令在ssh窗口输出key的内容:
cat issuer_private_key.pem
把输出的内容写入下面的配置文件内:
identity_providers:
  oidc:
    hmac_secret: this_is_a_secret_abc123abc123abc
    issuer_private_key: |
      -----BEGIN PRIVATE KEY-----
      你的key填充在这里
      -----END PRIVATE KEY-----
    access_token_lifespan: 1h
    authorize_code_lifespan: 1m
    id_token_lifespan: 1h
    refresh_token_lifespan: 90m
    enable_client_debug_messages: false
    clients: 
    - id: nextcloud
      description: NextCloud
      secret: '这里的密码修改上面用命令生成的要与nextcloud写的密码相同'
      public: false
      authorization_policy: two_factor
      redirect_uris:
        - https://nextcloud.example.com/apps/oidc_login/oidc ###红色部分修改为你的nextcloud的地址,有端口的记得携带。
      scopes:
        - openid
        - profile
        - email
        - groups
      userinfo_signing_algorithm: RS256

修改好上面的配置文件后,写入到authelia末尾保存重启authelia。

保存之后,登录nextcloud,下面会出现一个authelia的登录选项。

点击 log in with Authelia 就可以跳转到authelia的验证页面,完成验证后,authelia会自动注册一个新的账号到nextlcoud,颜面会有一点延迟,进第一次时间稍微长一点,以后就不会了。

这里需要注意,使用的authelia的账号,邮箱不能和nextlcoud的相同,否者会被覆盖,如果是管理员账号,覆盖后会变成普通用户权限,只能重新安装nextcloud。

参考文档:

本教程,参考authelia官方文档页面进行配置,如有其他问题请访问:Nextcloud - Integration - Authelia

结尾:

authelia目前我使用还是比较舒服的,减少了以前打开一个窗口就输入一次账号和密码的尴尬,而且从authelia的验证方式,比traefik做的要更好一些,如果大家有啥问题可以在下面留言或者q群喊我。

发表回复

后才能评论