Separated authorization code and client credentials flows

This commit is contained in:
David Allen 2024-03-03 18:22:07 -07:00
parent f2e5720aaa
commit 53d1a8cc35
No known key found for this signature in database
GPG key ID: 1D2A29322FBB6FCB
2 changed files with 339 additions and 0 deletions

View file

@ -0,0 +1,48 @@
package opaal
import (
"fmt"
)
type ClientCredentialsFlowParams struct {
State string `yaml:"state"`
ResponseType string `yaml:"response-type"`
}
type ClientCredentialsFlowEndpoints struct {
Create string
Authorize string
Token string
}
func ClientCredentials(eps ClientCredentialsFlowEndpoints, client *Client) error {
// register a new OAuth 2 client with authorization srever
_, err := client.CreateOAuthClient(eps.Create, nil)
if err != nil {
return fmt.Errorf("failed to register OAuth client: %v", err)
}
// authorize the client
_, err = client.AuthorizeOAuthClient(eps.Authorize)
if err != nil {
return fmt.Errorf("failed to authorize client: %v", err)
}
// request a token from the authorization server
res, err := client.PerformTokenGrant(eps.Token, "")
if err != nil {
return fmt.Errorf("failed to fetch token from authorization server: %v", err)
}
fmt.Printf("token: %v\n", string(res))
return nil
}
func ClientCredentialsWithConfig(config *Config, client *Client) error {
eps := ClientCredentialsFlowEndpoints{
Create: config.Authorization.RequestUrls.Clients,
Authorize: config.Authorization.RequestUrls.Authorize,
Token: config.Authorization.RequestUrls.Token,
}
return ClientCredentials(eps, client)
}