github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/identity/v3/federation/providers/CreateOIDC.go (about) 1 package providers 2 3 import ( 4 golangsdk "github.com/opentelekomcloud/gophertelekomcloud" 5 "github.com/opentelekomcloud/gophertelekomcloud/internal/build" 6 "github.com/opentelekomcloud/gophertelekomcloud/internal/extract" 7 "github.com/opentelekomcloud/gophertelekomcloud/openstack/identity/v3/federation" 8 ) 9 10 type CreateOIDCOpts struct { 11 // Identity provider name. 12 IdpIp string `json:"-"` 13 // Mode to access manage identity provider 14 AccessMode string `json:"access_mode" required:"true"` 15 // URL of the OpenID Connect identity provider. 16 // This field corresponds to the iss field in the ID token. 17 IdpUrl string `json:"idp_url" required:"true"` 18 // ID of a client registered with the OpenID Connect identity provider. 19 ClientId string `json:"client_id" required:"true"` 20 // Authorization endpoint of the OpenID Connect identity provider. 21 AuthEndpoint string `json:"authorization_endpoint,omitempty"` 22 // Scope of authorization requests. 23 Scope string `json:"scope,omitempty"` 24 // Response type 25 ResponseType string `json:"response_type,omitempty"` 26 // Response mode 27 ResponseMode string `json:"response_mode,omitempty"` 28 // SigningKey 29 SigningKey string `json:"signing_key" required:"true"` 30 } 31 32 func CreateOIDC(c *golangsdk.ServiceClient, opts CreateOIDCOpts) (*CreateOIDCOpts, error) { 33 b, err := build.RequestBody(opts, "openid_connect_config") 34 if err != nil { 35 return nil, err 36 } 37 raw, err := c.Post(c.ServiceURL(federation.BaseURL, "identity-providers", opts.IdpIp, "openid-connect-config"), b, nil, &golangsdk.RequestOpts{ 38 OkCodes: []int{201}, 39 MoreHeaders: map[string]string{"Content-Type": "application/json;charset=utf8"}, 40 }) 41 if err != nil { 42 return nil, err 43 } 44 45 var res CreateOIDCOpts 46 err = extract.IntoStructPtr(raw.Body, &res, "openid_connect_config") 47 return &res, err 48 }