mirror of
https://github.com/openziti/zrok.git
synced 2025-06-26 12:42:18 +02:00
shareOidc.secrets, ->store, grpc-> (#991)
This commit is contained in:
parent
0f81d7aa6e
commit
904e1fff1a
78
controller/shareOidc/secrets.go
Normal file
78
controller/shareOidc/secrets.go
Normal file
@ -0,0 +1,78 @@
|
||||
package shareOidc
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/openziti/zrok/controller/secretsGrpc"
|
||||
"github.com/openziti/zrok/controller/store"
|
||||
"github.com/openziti/zrok/sdk/golang/sdk"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
type Secrets struct {
|
||||
ClientId string
|
||||
ClientSecret string
|
||||
Scopes []string
|
||||
Issuer string
|
||||
AuthorizationEndpoint string
|
||||
TokenEndpoint string
|
||||
UserinfoEndpoint string
|
||||
JwksUri string
|
||||
}
|
||||
|
||||
func NewSecrets(clientId, clientSecret string, meta *IssuerMetadata) *Secrets {
|
||||
secrets := &Secrets{
|
||||
ClientId: clientId,
|
||||
ClientSecret: clientSecret,
|
||||
Scopes: meta.ScopesSupported,
|
||||
Issuer: meta.Issuer,
|
||||
AuthorizationEndpoint: meta.AuthorizationEndpoint,
|
||||
TokenEndpoint: meta.TokenEndpoint,
|
||||
UserinfoEndpoint: meta.UserinfoEndpoint,
|
||||
JwksUri: meta.JwksURI,
|
||||
}
|
||||
return secrets
|
||||
}
|
||||
|
||||
func FromGrpc(in *secretsGrpc.SecretsResponse) (*Secrets, error) {
|
||||
secrets := &Secrets{}
|
||||
for _, secret := range in.Secrets {
|
||||
switch secret.Key {
|
||||
case "auth_scheme":
|
||||
if secret.Value != string(sdk.Oidc) {
|
||||
return nil, errors.Errorf("expected 'oidc' auth_scheme, got '%v'", secret.Value)
|
||||
}
|
||||
case "oidc_client_id":
|
||||
secrets.ClientId = secret.Value
|
||||
case "oidc_client_secret":
|
||||
secrets.ClientSecret = secret.Value
|
||||
case "oidc_scopes":
|
||||
secrets.Scopes = strings.Split(secret.Value, ",")
|
||||
case "oidc_issuer":
|
||||
secrets.Issuer = secret.Value
|
||||
case "oidc_authorization_endpoint":
|
||||
secrets.AuthorizationEndpoint = secret.Value
|
||||
case "oidc_token_endpoint":
|
||||
secrets.TokenEndpoint = secret.Value
|
||||
case "oidc_userinfo_endpoint":
|
||||
secrets.UserinfoEndpoint = secret.Value
|
||||
case "oidc_jwks_uri":
|
||||
secrets.JwksUri = secret.Value
|
||||
}
|
||||
}
|
||||
return secrets, nil
|
||||
}
|
||||
|
||||
func (s *Secrets) ToStore(shareId int) *store.Secrets {
|
||||
var secrets []store.Secret
|
||||
secrets = append(secrets, store.Secret{Key: "auth_scheme", Value: "oidc"})
|
||||
secrets = append(secrets, store.Secret{Key: "oidc_client_id", Value: s.ClientId})
|
||||
secrets = append(secrets, store.Secret{Key: "oidc_client_secret", Value: s.ClientSecret})
|
||||
secrets = append(secrets, store.Secret{Key: "oidc_scopes", Value: strings.Join(s.Scopes, ",")})
|
||||
secrets = append(secrets, store.Secret{Key: "oidc_issuer", Value: s.Issuer})
|
||||
secrets = append(secrets, store.Secret{Key: "oidc_authorization_endpoint", Value: s.AuthorizationEndpoint})
|
||||
secrets = append(secrets, store.Secret{Key: "oidc_token_endpoint", Value: s.TokenEndpoint})
|
||||
secrets = append(secrets, store.Secret{Key: "oidc_userinfo_endpoint", Value: s.UserinfoEndpoint})
|
||||
secrets = append(secrets, store.Secret{Key: "oidc_jwks_uri", Value: s.JwksUri})
|
||||
return &store.Secrets{ShareId: shareId, Secrets: secrets}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user