惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

M
MIT News - Artificial intelligence
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
J
Java Code Geeks
G
Google Developers Blog
美团技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
腾讯CDC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
The Blog of Author Tim Ferriss
月光博客
月光博客
B
Blog
WordPress大学
WordPress大学
云风的 BLOG
云风的 BLOG
博客园_首页
人人都是产品经理
人人都是产品经理
aimingoo的专栏
aimingoo的专栏
Y
Y Combinator Blog
Jina AI
Jina AI
S
SegmentFault 最新的问题
H
Help Net Security
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
Google DeepMind News
Google DeepMind News

博客园 - aozima

使用API查询rcvps.cn的主机流量 zabbix监控MinIO zabbix监控gestetner GS3021打印机 zabbix监控DCP-7180打印机 zabbix监控m232dw打印机 给Snipe-IT添加扫码盘点 gitlab禁止用户自己删除帐号 多年前旧笔记本惠普CQ40升级记录 关闭 gitlab中的 letsencrypt thinkphp5自定义sql排序 nginx自带的webdav掉坑计 获取上个程序的返回值 修改 ls 命令的时间显示格式 使用CURL测量网络延时 测试 tls 1.3 阿里云共享上网 tensorflow-gpu 1.13 提示找不到 libcublas.so.10.0 的问题 阿里云不同帐号间内网互通 R410自带SAS6IR卡折腾记
Snipe-IT支持Oauth2登录
aozima · 2025-11-16 · via 博客园 - aozima

Snipe-IT默认支持的第3方登录为:SAML 和 Google Workspace。

不支持添加自定义Oauth2登录。

查了相关文档,

并用casdoor作为idp测试了SAML并没有成功,加上第1次用SAML且比较复杂,不想继续调试。

看到相关讨论

于是直接小修改几个源码就可以实现自定义Oauth登录了


更新参数检查

app/Models/Setting.php 删除参数限制,原来只支持google

           'thumbnail_max_h'                     => 'numeric|max:500|min:25',
-          'google_client_id'                    => 'nullable|ends_with:apps.googleusercontent.com'

修改URL及JWT

vendor/laravel/socialite/src/Two/GoogleProvider.php

     protected function getAuthUrl($state)
     {
-        return $this->buildAuthUrlFromBase('https://accounts.google.com/o/oauth2/auth', $state);
+        return $this->buildAuthUrlFromBase('https://xxx.com/login/oauth/authorize', $state);
     }

     protected function getTokenUrl()
     {
-        return 'https://www.googleapis.com/oauth2/v4/token';
+        return 'https://xxx.com/api/login/oauth/access_token';
     }

     protected function getUserByToken($token)
     {
-        if ($this->isJwtToken($token)) {
-            return $this->getUserFromJwtToken($token);
-        }
-
-        $response = $this->getHttpClient()->get('https://www.googleapis.com/oauth2/v3/userinfo', [
-            RequestOptions::QUERY => [
-                'prettyPrint' => 'false',
-            ],
-            RequestOptions::HEADERS => [
-                'Accept' => 'application/json',
-                'Authorization' => 'Bearer '.$token,
-            ],
+        $response = $this->getHttpClient()->get('https://xxx.com/api/userinfo', [
+            RequestOptions::QUERY => ['access_token' => $token],
         ]);
 
         return json_decode((string) $response->getBody(), true);
     }