0x00 前言

这两天看到Halo的oauth插件更新了,支持了第三方SSO,于是想到用微软账号绑定博客账号。但是找了一圈发现配置SSO的博客不多,于是决定自己折腾,遂有了此篇指南。

0x01 azure配置

step1 申请应用

首先进入azure后台管理界面portal.azure.com,在上方搜索"App registrations"。然后点击上方"New registration",新建一个应用。此时界面如下图:

Snipaste_2025-03-27_12-47-11.png
这里我们需要填写三项:
Name字段是SSO应用的名称,可以自己随便填写。
Supported account types是使用SSO登录时可以接受的账户的类型:"organizaion directory"是微软学校或者工作账户,一般是学校或者单位发的,包含这个的选项可以用工作账号绑定Halo;"personal Microsoft account"是我们自己注册的账号,包含这个的选项可以用自己的微软账号绑定Halo。对于我们个人使用的博客的话,一般选后面两项都可以,这里选择最后的"personal account"作为演示。
Redirect URI字段左边类型选择Web,右边的网址填写https://<your site domain>/login/oauth2/code/sso即可,其中<your site domain>更改为你的服务器的域名。需要注意的是,azure只接受https协议的回调地址,所以需要给自己的域名配置ssl证书,没有的话可以申请阿里云的免费证书。
(填http就会有提示)
Snipaste_2025-03-27_12-33-57.png
所有信息都正确都填写后点击Registration,即可注册应用。申请应用之后会进入应用主页,记录主页中Application (client) ID字段的值,这个一会配置Halo的时候要用到。

step2 申请密钥

点击左侧的Certificates & secrets

Snipaste_2025-03-27_12-55-54.png

点击中间的Add client secret
Snipaste_2025-03-27_12-57-19.png
在弹出的窗口中填写Description和Expire date字段。Description是对客户端的描述,可以随便填;Expire date是密钥过期时间,密钥过期之后,就无法登录,需要重新申请或者跟新密钥,对于我们的博客来说,选择24months即可,这样可以避免更换密钥。
点击Add即可完成secret申请。
申请完之后,下方的列表就会显示我们刚刚申请的secret,其中Value就是申请的Client Secret,也需要记录后面配置Halo要用到。

step3 配置openid/oauth权限

选择左侧列表中的 API Permissions ,然后选择Add a permission。这里会看到右侧弹出了一个窗口,在窗口中选择Microsoft Graph,然后就会进入下图所示的API选择界面。找到OpenId permissions,选中四个权限并点击下面Add permisions即可.
Snipaste_2025-03-27_18-06-32.png

0x02 Halo配置

首先Halo要安装了官方的OAuth插件的1.6.0版本(更新到最新版即可),并确保Halo OAuth插件已经启用。
然后进入Halo控制台用户界面,点击右上角身份认证的选项,可以看到插件支持的认证方式。这里开启SSO选项,然后点击SSO选项开关右侧的设置图标,进入SSO的配置界面。

Snipaste_2025-03-27_18-22-00.png

Snipaste_2025-03-27_18-25-03.png