diff --git a/platform/client.go b/platform/client.go index 8bcdc3f..5e714cd 100644 --- a/platform/client.go +++ b/platform/client.go @@ -116,14 +116,14 @@ func (c *Client) GetAuthLocalSocket() string { return "http://unix:/var/snap/platform/current/authelia.socket:" } -func (c *Client) RegisterOIDCClient(id, redirectUri string, requirePkce bool, tokenEndpointAuthMethod string) (string, error) { +func (c *Client) RegisterOIDCClient(id string, redirectUris []string, requirePkce bool, tokenEndpointAuthMethod string) (string, error) { requirePkceString := "false" if requirePkce { requirePkceString = "true" } values := url.Values{ "id": {id}, - "redirect_uri": {redirectUri}, + "redirect_uri": redirectUris, "require_pkce": {requirePkceString}, "token_endpoint_auth_method": {tokenEndpointAuthMethod}, } diff --git a/platform/client_test.go b/platform/client_test.go index 870a120..c9a2439 100644 --- a/platform/client_test.go +++ b/platform/client_test.go @@ -55,6 +55,20 @@ func TestRealHttpClient_Post(t *testing.T) { } +func TestClient_RegisterOIDCClient_SendsMultipleRedirectUris(t *testing.T) { + httpClient := &HttpClientStub{} + client := &Client{ + client: httpClient, + logger: log.Logger(), + } + _, err := client.RegisterOIDCClient("app", []string{"/cb", "/mobile"}, true, "client_secret_basic") + assert.NoError(t, err) + assert.Equal(t, "app", httpClient.values.Get("id")) + assert.Equal(t, []string{"/cb", "/mobile"}, httpClient.values["redirect_uri"]) + assert.Equal(t, "true", httpClient.values.Get("require_pkce")) + assert.Equal(t, "client_secret_basic", httpClient.values.Get("token_endpoint_auth_method")) +} + func TestClient_GetAppStorageDir(t *testing.T) { httpClient := &HttpClientStub{} client := &Client{