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  }