使用 pgadmin 和 gitlab 启用 oauth2

Posted

技术标签:

【中文标题】使用 pgadmin 和 gitlab 启用 oauth2【英文标题】:enabling oauth2 with pgadmin and gitlab 【发布时间】:2021-10-09 09:14:41 【问题描述】:

我已经在 Kubernetes 上部署了 pgadmin,我正在尝试按照 pgadmin docs 启用 oauth2

这是我传入的 oauth 配置:

AUTHENTICATION_SOURCES = ['oauth2', 'internal']

OAUTH2_CONFIG = [
    
        # The name of the of the oauth provider, ex: github, google
        'OAUTH2_NAME': 'gitlab',
        # The display name, ex: Google
        'OAUTH2_DISPLAY_NAME': 'Gitlab',
        # Oauth client id
        'OAUTH2_CLIENT_ID': 'my-client-id-here',
        # Oauth secret
        'OAUTH2_CLIENT_SECRET': 'my-client-secret-here',
        # URL to generate a token,
        # Ex: https://github.com/login/oauth/access_token
        'OAUTH2_TOKEN_URL': 'https://gitlab.com/oauth/token',
        # URL is used for authentication,
        # Ex: https://github.com/login/oauth/authorize
        'OAUTH2_AUTHORIZATION_URL': "https://gitlab.com/oauth/authorize",
        # Oauth base url, ex: https://api.github.com/
        'OAUTH2_API_BASE_URL': 'https://gitlab.com/api/v4/',
        # Name of the Endpoint, ex: user
        'OAUTH2_USERINFO_ENDPOINT': 'user',
        # Font-awesome icon, ex: fa-github
        'OAUTH2_ICON': 'fa-gitlab',
        # UI button colour, ex: #0000ff
        'OAUTH2_BUTTON_COLOR': '#E24329',
    
]
OAUTH2_AUTO_CREATE_USER = True

我已经在 Gitlab 上添加了应用程序。重定向 URI 是:

https://pgadmin.nonprod.example.io/oauth2/authorize
http://pgadmin.nonprod.example.io/oauth2/authorize

我为应用程序提供了以下范围:

API openid 个人资料 电子邮件

我正在使用 pgadmin ingress 和我的本地 minikube 集群在本地对其进行测试。单击“使用 Gitlab 登录”按钮时,我不断收到以下错误:


success: 0,
errormsg: "403 Client Error: Forbidden for url: https://gitlab.com/api/v4/user",
info: "",
result: null,
data: null

我相信我拥有所有必要的 gitlab 权限并且无法弄清楚我做错了什么。

【问题讨论】:

【参考方案1】:

我认为在这种情况下,我们可以只使用 OIDC 端点来获取用户信息。对于 gitlab,它是:ttps://gitlab.com/oauth/userinfo。因此,您不需要api 范围,只需openid email profile

所以以下配置实际上对我有用:

AUTHENTICATION_SOURCES = ['oauth2', 'internal']

OAUTH2_CONFIG = [
    
        'OAUTH2_NAME': 'gitlab',
        'OAUTH2_DISPLAY_NAME': 'Gitlab',
        'OAUTH2_CLIENT_ID': 'my-client-id-here',
        'OAUTH2_CLIENT_SECRET': 'my-client-secret-here',
        'OAUTH2_TOKEN_URL': 'https://gitlab.com/oauth/token',
        'OAUTH2_AUTHORIZATION_URL': "https://gitlab.com/oauth/authorize",
        'OAUTH2_API_BASE_URL': 'https://gitlab.com/oauth/',
        'OAUTH2_USERINFO_ENDPOINT': 'userinfo',
        'OAUTH2_SCOPE': 'openid email profile',
        'OAUTH2_ICON': 'fa-gitlab',
        'OAUTH2_BUTTON_COLOR': '#E24329',
    
]
OAUTH2_AUTO_CREATE_USER = True

【讨论】:

以上是关于使用 pgadmin 和 gitlab 启用 oauth2的主要内容,如果未能解决你的问题,请参考以下文章

gitlab 启用HTTPS

无法在 GitLab CE 上启用 Google 登录(omniauth)

pgAdmin III 中没有备份和恢复选项

OA系统无法打开PDF文件,设置加载项发现Office Document Cache Handler无法启用,怎么设置?

如何为 Gitlab 运行器启用通过 SSH 克隆?

如何为 GitLab CI 运行器启用 Maven 工件缓存?