mirror of
https://github.com/gensokyo-zone/infrastructure.git
synced 2026-02-09 12:29:19 -08:00
feat(nginx): OIDC webfinger
This commit is contained in:
parent
ffde3c1c27
commit
9e1a9aa752
1 changed files with 37 additions and 2 deletions
|
|
@ -4,9 +4,13 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: let
|
||||||
|
inherit (lib.modules) mkMerge mkAfter;
|
||||||
|
inherit (lib.strings) escapeRegex;
|
||||||
|
inherit (gensokyo-zone.lib) domain;
|
||||||
|
in {
|
||||||
services.nginx.virtualHosts.gensokyoZone = {
|
services.nginx.virtualHosts.gensokyoZone = {
|
||||||
serverName = config.networking.domain;
|
serverName = domain;
|
||||||
locations = {
|
locations = {
|
||||||
"/" = {
|
"/" = {
|
||||||
root = gensokyo-zone.inputs.website.packages.${pkgs.system}.gensokyoZone;
|
root = gensokyo-zone.inputs.website.packages.${pkgs.system}.gensokyoZone;
|
||||||
|
|
@ -19,6 +23,37 @@
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
"/.well-known/webfinger" = let
|
||||||
|
# https://www.rfc-editor.org/rfc/rfc7033#section-3.1
|
||||||
|
oidc = {
|
||||||
|
subject = "acct:${acct}@${domain}";
|
||||||
|
links = [
|
||||||
|
{
|
||||||
|
rel = "http://openid.net/specs/connect/1.0/issuer";
|
||||||
|
href = "https://sso.${domain}/realms/${domain}";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
acct = "$webfinger_oidc_acct";
|
||||||
|
in {
|
||||||
|
headers.set.Access-Control-Allow-Origin = "*";
|
||||||
|
extraConfig = mkMerge [
|
||||||
|
''
|
||||||
|
set ${acct} "";
|
||||||
|
if ($arg_resource ~* "^acct(%3A|:)([^%@]*)(%40|@)${escapeRegex domain}$") {
|
||||||
|
set ${acct} $2;
|
||||||
|
add_header "Content-Type" "application/jrd+json";
|
||||||
|
}
|
||||||
|
if ($arg_rel !~* "http.*openid\.net") {
|
||||||
|
set ${acct} "";
|
||||||
|
}
|
||||||
|
if (${acct} = "") {
|
||||||
|
return 404;
|
||||||
|
}
|
||||||
|
''
|
||||||
|
(mkAfter "return 200 '${builtins.toJSON oidc}';")
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue