OAuth2: Add Client Credentials Authentication #213 #782 #808 #3730 #3943

This adds standard OAuth2 client credentials and bearer token support as
well as scope-based authorization checks for REST API clients. Note that
this initial implementation should not be used in production and that
the access token limit has not been implemented yet.

Signed-off-by: Michael Mayer <michael@photoprism.app>
This commit is contained in:
Michael Mayer
2023-12-12 18:42:50 +01:00
parent e80b07795c
commit 467f7b1585
78 changed files with 2474 additions and 406 deletions

View File

@@ -22,8 +22,9 @@ func TestIsUID(t *testing.T) {
prefix := byte('x')
for n := 0; n < 10; n++ {
id := GenerateUID(prefix)
assert.True(t, IsUID(id, prefix))
s := GenerateUID(prefix)
t.Logf("UID %d: %s", n, s)
assert.True(t, IsUID(s, prefix))
}
assert.True(t, IsUID("lt9k3pw1wowuy3c2", 'l'))
@@ -69,9 +70,10 @@ func TestIsAlnum(t *testing.T) {
func TestGenerateUID(t *testing.T) {
for n := 0; n < 5; n++ {
uid := GenerateUID('x')
t.Logf("id: %s", uid)
uid := GenerateUID('c')
t.Logf("UID %d: %s", n, uid)
assert.Equal(t, len(uid), 16)
assert.True(t, IsUID(uid, 'c'))
}
}