backport of commit 7490a2ebb7f5950321ec7930ee5f911c86febb04 (#20856)
Co-authored-by: Milena Zlaticanin <60530402+Zlaticanin@users.noreply.github.com>
This commit is contained in:
parent
c16d572ab8
commit
127cef66a2
|
@ -8,12 +8,17 @@ import (
|
|||
"crypto/rand"
|
||||
"crypto/rsa"
|
||||
"crypto/x509"
|
||||
"crypto/x509/pkix"
|
||||
"encoding/pem"
|
||||
"fmt"
|
||||
"io"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/hashicorp/vault/helper/random"
|
||||
"github.com/hashicorp/vault/sdk/database/dbplugin/v5"
|
||||
"github.com/hashicorp/vault/sdk/helper/certutil"
|
||||
"github.com/hashicorp/vault/sdk/helper/template"
|
||||
"github.com/mitchellh/mapstructure"
|
||||
)
|
||||
|
||||
|
@ -170,3 +175,207 @@ func (kg rsaKeyGenerator) configMap() (map[string]interface{}, error) {
|
|||
}
|
||||
return config, nil
|
||||
}
|
||||
|
||||
type ClientCertificateGenerator struct {
|
||||
// CommonNameTemplate is username template to be used for the client certificate common name.
|
||||
CommonNameTemplate string `mapstructure:"common_name_template,omitempty"`
|
||||
|
||||
// CAPrivateKey is the PEM-encoded private key for the given ca_cert.
|
||||
CAPrivateKey string `mapstructure:"ca_private_key,omitempty"`
|
||||
|
||||
// CACert is the PEM-encoded CA certificate.
|
||||
CACert string `mapstructure:"ca_cert,omitempty"`
|
||||
|
||||
// KeyType specifies the desired key type.
|
||||
// Options include: 'rsa', 'ed25519', 'ec'.
|
||||
KeyType string `mapstructure:"key_type,omitempty"`
|
||||
|
||||
// KeyBits is the number of bits to use for the generated keys.
|
||||
// Options include: with key_type=rsa, 2048 (default), 3072, 4096;
|
||||
// With key_type=ec, allowed values are: 224, 256 (default), 384, 521;
|
||||
// Ignored with key_type=ed25519.
|
||||
KeyBits int `mapstructure:"key_bits,omitempty"`
|
||||
|
||||
// SignatureBits is the number of bits to use in the signature algorithm.
|
||||
// Options include: 256 (default), 384, 512.
|
||||
SignatureBits int `mapstructure:"signature_bits,omitempty"`
|
||||
|
||||
parsedCABundle *certutil.ParsedCertBundle
|
||||
cnProducer template.StringTemplate
|
||||
}
|
||||
|
||||
// newClientCertificateGenerator returns a new ClientCertificateGenerator
|
||||
// using the given config. Default values will be set on the returned
|
||||
// ClientCertificateGenerator if not provided in the config.
|
||||
func newClientCertificateGenerator(config map[string]interface{}) (ClientCertificateGenerator, error) {
|
||||
var cg ClientCertificateGenerator
|
||||
if err := mapstructure.WeakDecode(config, &cg); err != nil {
|
||||
return cg, err
|
||||
}
|
||||
|
||||
switch cg.KeyType {
|
||||
case "rsa":
|
||||
switch cg.KeyBits {
|
||||
case 0:
|
||||
cg.KeyBits = 2048
|
||||
case 2048, 3072, 4096:
|
||||
default:
|
||||
return cg, fmt.Errorf("invalid key_bits")
|
||||
}
|
||||
case "ec":
|
||||
switch cg.KeyBits {
|
||||
case 0:
|
||||
cg.KeyBits = 256
|
||||
case 224, 256, 384, 521:
|
||||
default:
|
||||
return cg, fmt.Errorf("invalid key_bits")
|
||||
}
|
||||
case "ed25519":
|
||||
// key_bits ignored
|
||||
default:
|
||||
return cg, fmt.Errorf("invalid key_type")
|
||||
}
|
||||
|
||||
switch cg.SignatureBits {
|
||||
case 0:
|
||||
cg.SignatureBits = 256
|
||||
case 256, 384, 512:
|
||||
default:
|
||||
return cg, fmt.Errorf("invalid signature_bits")
|
||||
}
|
||||
|
||||
if cg.CommonNameTemplate == "" {
|
||||
return cg, fmt.Errorf("missing required common_name_template")
|
||||
}
|
||||
|
||||
// Validate the common name template
|
||||
t, err := template.NewTemplate(template.Template(cg.CommonNameTemplate))
|
||||
if err != nil {
|
||||
return cg, fmt.Errorf("failed to create template: %w", err)
|
||||
}
|
||||
|
||||
_, err = t.Generate(dbplugin.UsernameMetadata{})
|
||||
if err != nil {
|
||||
return cg, fmt.Errorf("invalid common_name_template: %w", err)
|
||||
}
|
||||
cg.cnProducer = t
|
||||
|
||||
if cg.CACert == "" {
|
||||
return cg, fmt.Errorf("missing required ca_cert")
|
||||
}
|
||||
if cg.CAPrivateKey == "" {
|
||||
return cg, fmt.Errorf("missing required ca_private_key")
|
||||
}
|
||||
parsedBundle, err := certutil.ParsePEMBundle(strings.Join([]string{cg.CACert, cg.CAPrivateKey}, "\n"))
|
||||
if err != nil {
|
||||
return cg, err
|
||||
}
|
||||
if parsedBundle.PrivateKey == nil {
|
||||
return cg, fmt.Errorf("private key not found in the PEM bundle")
|
||||
}
|
||||
if parsedBundle.PrivateKeyType == certutil.UnknownPrivateKey {
|
||||
return cg, fmt.Errorf("unknown private key found in the PEM bundle")
|
||||
}
|
||||
if parsedBundle.Certificate == nil {
|
||||
return cg, fmt.Errorf("certificate not found in the PEM bundle")
|
||||
}
|
||||
if !parsedBundle.Certificate.IsCA {
|
||||
return cg, fmt.Errorf("the given certificate is not marked for CA use")
|
||||
}
|
||||
if !parsedBundle.Certificate.BasicConstraintsValid {
|
||||
return cg, fmt.Errorf("the given certificate does not meet basic constraints for CA use")
|
||||
}
|
||||
|
||||
certBundle, err := parsedBundle.ToCertBundle()
|
||||
if err != nil {
|
||||
return cg, fmt.Errorf("error converting raw values into cert bundle: %w", err)
|
||||
}
|
||||
|
||||
parsedCABundle, err := certBundle.ToParsedCertBundle()
|
||||
if err != nil {
|
||||
return cg, fmt.Errorf("failed to parse cert bundle: %w", err)
|
||||
}
|
||||
cg.parsedCABundle = parsedCABundle
|
||||
|
||||
return cg, nil
|
||||
}
|
||||
|
||||
func (cg *ClientCertificateGenerator) generate(r io.Reader, expiration time.Time, userMeta dbplugin.UsernameMetadata) (*certutil.CertBundle, string, error) {
|
||||
commonName, err := cg.cnProducer.Generate(userMeta)
|
||||
if err != nil {
|
||||
return nil, "", err
|
||||
}
|
||||
|
||||
// Set defaults
|
||||
keyBits := cg.KeyBits
|
||||
signatureBits := cg.SignatureBits
|
||||
switch cg.KeyType {
|
||||
case "rsa":
|
||||
if keyBits == 0 {
|
||||
keyBits = 2048
|
||||
}
|
||||
if signatureBits == 0 {
|
||||
signatureBits = 256
|
||||
}
|
||||
case "ec":
|
||||
if keyBits == 0 {
|
||||
keyBits = 256
|
||||
}
|
||||
if signatureBits == 0 {
|
||||
if keyBits == 224 {
|
||||
signatureBits = 256
|
||||
} else {
|
||||
signatureBits = keyBits
|
||||
}
|
||||
}
|
||||
case "ed25519":
|
||||
// key_bits ignored
|
||||
if signatureBits == 0 {
|
||||
signatureBits = 256
|
||||
}
|
||||
}
|
||||
|
||||
subject := pkix.Name{
|
||||
CommonName: commonName,
|
||||
// Additional subject DN options intentionally omitted for now
|
||||
}
|
||||
|
||||
creation := &certutil.CreationBundle{
|
||||
Params: &certutil.CreationParameters{
|
||||
Subject: subject,
|
||||
KeyType: cg.KeyType,
|
||||
KeyBits: cg.KeyBits,
|
||||
SignatureBits: cg.SignatureBits,
|
||||
NotAfter: expiration,
|
||||
KeyUsage: x509.KeyUsageDigitalSignature,
|
||||
ExtKeyUsage: certutil.ClientAuthExtKeyUsage,
|
||||
BasicConstraintsValidForNonCA: false,
|
||||
NotBeforeDuration: 30 * time.Second,
|
||||
},
|
||||
SigningBundle: &certutil.CAInfoBundle{
|
||||
ParsedCertBundle: *cg.parsedCABundle,
|
||||
},
|
||||
}
|
||||
|
||||
parsedClientBundle, err := certutil.CreateCertificateWithRandomSource(creation, r)
|
||||
if err != nil {
|
||||
return nil, "", fmt.Errorf("unable to generate client certificate: %w", err)
|
||||
}
|
||||
|
||||
cb, err := parsedClientBundle.ToCertBundle()
|
||||
if err != nil {
|
||||
return nil, "", fmt.Errorf("error converting raw cert bundle to cert bundle: %w", err)
|
||||
}
|
||||
|
||||
return cb, subject.String(), nil
|
||||
}
|
||||
|
||||
// configMap returns the configuration of the ClientCertificateGenerator
|
||||
// as a map from string to string.
|
||||
func (cg ClientCertificateGenerator) configMap() (map[string]interface{}, error) {
|
||||
config := make(map[string]interface{})
|
||||
if err := mapstructure.WeakDecode(cg, &config); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return config, nil
|
||||
}
|
||||
|
|
|
@ -17,6 +17,252 @@ import (
|
|||
"github.com/stretchr/testify/mock"
|
||||
)
|
||||
|
||||
// Test_newClientCertificateGenerator tests the ClientCertificateGenerator struct based on the config
|
||||
func Test_newClientCertificateGenerator(t *testing.T) {
|
||||
type args struct {
|
||||
config map[string]interface{}
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
args args
|
||||
want ClientCertificateGenerator
|
||||
wantErr bool
|
||||
}{
|
||||
{
|
||||
name: "newClientCertificateGenerator with nil config",
|
||||
args: args{
|
||||
config: nil,
|
||||
},
|
||||
want: ClientCertificateGenerator{
|
||||
CommonNameTemplate: "",
|
||||
CAPrivateKey: "",
|
||||
CACert: "",
|
||||
KeyType: "",
|
||||
KeyBits: 0,
|
||||
SignatureBits: 0,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "newClientCertificateGenerator with zero value key_type",
|
||||
args: args{
|
||||
config: map[string]interface{}{
|
||||
"key_type": "",
|
||||
},
|
||||
},
|
||||
want: ClientCertificateGenerator{
|
||||
KeyType: "",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "newClientCertificateGenerator with rsa value key_type",
|
||||
args: args{
|
||||
config: map[string]interface{}{
|
||||
"key_type": "rsa",
|
||||
},
|
||||
},
|
||||
want: ClientCertificateGenerator{
|
||||
KeyType: "rsa",
|
||||
KeyBits: 2048,
|
||||
SignatureBits: 256,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "newClientCertificateGenerator with ec value key_type",
|
||||
args: args{
|
||||
config: map[string]interface{}{
|
||||
"key_type": "ec",
|
||||
},
|
||||
},
|
||||
want: ClientCertificateGenerator{
|
||||
KeyType: "ec",
|
||||
KeyBits: 256,
|
||||
SignatureBits: 256,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "newClientCertificateGenerator with ed25519 value key_type",
|
||||
args: args{
|
||||
config: map[string]interface{}{
|
||||
"key_type": "ed25519",
|
||||
},
|
||||
},
|
||||
want: ClientCertificateGenerator{
|
||||
KeyType: "ed25519",
|
||||
SignatureBits: 256,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "newClientCertificateGenerator with invalid key_type",
|
||||
args: args{
|
||||
config: map[string]interface{}{
|
||||
"key_type": "ece",
|
||||
},
|
||||
},
|
||||
wantErr: true,
|
||||
},
|
||||
{
|
||||
name: "newClientCertificateGenerator with zero value key_bits",
|
||||
args: args{
|
||||
config: map[string]interface{}{
|
||||
"key_bits": "0",
|
||||
},
|
||||
},
|
||||
want: ClientCertificateGenerator{
|
||||
KeyBits: 0,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "newClientCertificateGenerator with 2048 value key_bits",
|
||||
args: args{
|
||||
config: map[string]interface{}{
|
||||
"key_bits": "2048",
|
||||
},
|
||||
},
|
||||
want: ClientCertificateGenerator{
|
||||
KeyBits: 2048,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "newClientCertificateGenerator with 3072 value key_bits",
|
||||
args: args{
|
||||
config: map[string]interface{}{
|
||||
"key_bits": "3072",
|
||||
},
|
||||
},
|
||||
want: ClientCertificateGenerator{
|
||||
KeyBits: 3072,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "newClientCertificateGenerator with 4096 value key_bits",
|
||||
args: args{
|
||||
config: map[string]interface{}{
|
||||
"key_bits": "4096",
|
||||
},
|
||||
},
|
||||
want: ClientCertificateGenerator{
|
||||
KeyBits: 4096,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "newClientCertificateGenerator with 224 value key_bits",
|
||||
args: args{
|
||||
config: map[string]interface{}{
|
||||
"key_bits": "224",
|
||||
},
|
||||
},
|
||||
want: ClientCertificateGenerator{
|
||||
KeyBits: 224,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "newClientCertificateGenerator with 256 value key_bits",
|
||||
args: args{
|
||||
config: map[string]interface{}{
|
||||
"key_bits": "256",
|
||||
},
|
||||
},
|
||||
want: ClientCertificateGenerator{
|
||||
KeyBits: 256,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "newClientCertificateGenerator with 384 value key_bits",
|
||||
args: args{
|
||||
config: map[string]interface{}{
|
||||
"key_bits": "384",
|
||||
},
|
||||
},
|
||||
want: ClientCertificateGenerator{
|
||||
KeyBits: 384,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "newClientCertificateGenerator with 521 value key_bits",
|
||||
args: args{
|
||||
config: map[string]interface{}{
|
||||
"key_bits": "521",
|
||||
},
|
||||
},
|
||||
want: ClientCertificateGenerator{
|
||||
KeyBits: 521,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "newClientCertificateGenerator with invalid key_bits",
|
||||
args: args{
|
||||
config: map[string]interface{}{
|
||||
"key_bits": "4097",
|
||||
},
|
||||
},
|
||||
wantErr: true,
|
||||
},
|
||||
{
|
||||
name: "newClientCertificateGenerator with zero value signature_bits",
|
||||
args: args{
|
||||
config: map[string]interface{}{
|
||||
"signature_bits": "0",
|
||||
},
|
||||
},
|
||||
want: ClientCertificateGenerator{
|
||||
SignatureBits: 0,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "newClientCertificateGenerator with 256 value signature_bits",
|
||||
args: args{
|
||||
config: map[string]interface{}{
|
||||
"signature_bits": "256",
|
||||
},
|
||||
},
|
||||
want: ClientCertificateGenerator{
|
||||
SignatureBits: 256,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "newClientCertificateGenerator with 384 value signature_bits",
|
||||
args: args{
|
||||
config: map[string]interface{}{
|
||||
"signature_bits": "384",
|
||||
},
|
||||
},
|
||||
want: ClientCertificateGenerator{
|
||||
SignatureBits: 384,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "newClientCertificateGenerator with 512 value signature_bits",
|
||||
args: args{
|
||||
config: map[string]interface{}{
|
||||
"signature_bits": "512",
|
||||
},
|
||||
},
|
||||
want: ClientCertificateGenerator{
|
||||
SignatureBits: 512,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "newClientCertificateGenerator with invalid signature_bits",
|
||||
args: args{
|
||||
config: map[string]interface{}{
|
||||
"signature_bits": "612",
|
||||
},
|
||||
},
|
||||
wantErr: true,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got, err := newClientCertificateGenerator(tt.args.config)
|
||||
if tt.wantErr {
|
||||
assert.Error(t, err)
|
||||
return
|
||||
}
|
||||
assert.Equal(t, tt.want, got)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func Test_newPasswordGenerator(t *testing.T) {
|
||||
type args struct {
|
||||
config map[string]interface{}
|
||||
|
|
|
@ -9,6 +9,7 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/hashicorp/go-secure-stdlib/strutil"
|
||||
"github.com/hashicorp/vault/sdk/database/dbplugin/v5"
|
||||
v5 "github.com/hashicorp/vault/sdk/database/dbplugin/v5"
|
||||
"github.com/hashicorp/vault/sdk/framework"
|
||||
"github.com/hashicorp/vault/sdk/logical"
|
||||
|
@ -171,6 +172,27 @@ func (b *databaseBackend) pathCredsCreateRead() framework.OperationFunc {
|
|||
|
||||
// Set output credential
|
||||
respData["rsa_private_key"] = string(private)
|
||||
case v5.CredentialTypeClientCertificate:
|
||||
generator, err := newClientCertificateGenerator(role.CredentialConfig)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to construct credential generator: %s", err)
|
||||
}
|
||||
|
||||
// Generate the client certificate
|
||||
cb, subject, err := generator.generate(b.GetRandomReader(), expiration,
|
||||
newUserReq.UsernameConfig)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to generate client certificate: %w", err)
|
||||
}
|
||||
|
||||
// Set input credential
|
||||
newUserReq.CredentialType = dbplugin.CredentialTypeClientCertificate
|
||||
newUserReq.Subject = subject
|
||||
|
||||
// Set output credential
|
||||
respData["client_certificate"] = cb.Certificate
|
||||
respData["private_key"] = cb.PrivateKey
|
||||
respData["private_key_type"] = cb.PrivateKeyType
|
||||
}
|
||||
|
||||
// Overwriting the password in the event this is a legacy database
|
||||
|
|
|
@ -651,6 +651,8 @@ func (r *roleEntry) setCredentialType(credentialType string) error {
|
|||
r.CredentialType = v5.CredentialTypePassword
|
||||
case v5.CredentialTypeRSAPrivateKey.String():
|
||||
r.CredentialType = v5.CredentialTypeRSAPrivateKey
|
||||
case v5.CredentialTypeClientCertificate.String():
|
||||
r.CredentialType = v5.CredentialTypeClientCertificate
|
||||
default:
|
||||
return fmt.Errorf("invalid credential_type %q", credentialType)
|
||||
}
|
||||
|
@ -692,6 +694,18 @@ func (r *roleEntry) setCredentialConfig(config map[string]string) error {
|
|||
if len(cm) > 0 {
|
||||
r.CredentialConfig = cm
|
||||
}
|
||||
case v5.CredentialTypeClientCertificate:
|
||||
generator, err := newClientCertificateGenerator(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
cm, err := generator.configMap()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(cm) > 0 {
|
||||
r.CredentialConfig = cm
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
```release-note:feature
|
||||
**MongoDB Atlas Database Secrets**: Adds support for client certificate credentials
|
||||
```
|
2
go.mod
2
go.mod
|
@ -49,6 +49,7 @@ require (
|
|||
github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c
|
||||
github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf
|
||||
github.com/denisenkom/go-mssqldb v0.12.2
|
||||
github.com/docker/go-connections v0.4.0
|
||||
github.com/duosecurity/duo_api_golang v0.0.0-20190308151101-6c680f768e74
|
||||
github.com/dustin/go-humanize v1.0.0
|
||||
github.com/fatih/color v1.15.0
|
||||
|
@ -319,7 +320,6 @@ require (
|
|||
github.com/docker/cli v20.10.20+incompatible // indirect
|
||||
github.com/docker/distribution v2.8.2+incompatible // indirect
|
||||
github.com/docker/docker v23.0.4+incompatible // indirect
|
||||
github.com/docker/go-connections v0.4.0 // indirect
|
||||
github.com/docker/go-units v0.5.0 // indirect
|
||||
github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 // indirect
|
||||
github.com/dvsekhvalnov/jose2go v1.5.0 // indirect
|
||||
|
|
|
@ -65,6 +65,7 @@ func TestConversionsHaveAllFields(t *testing.T) {
|
|||
CredentialType: CredentialTypeRSAPrivateKey,
|
||||
PublicKey: []byte("-----BEGIN PUBLIC KEY-----"),
|
||||
Password: "password",
|
||||
Subject: "subject",
|
||||
Expiration: time.Now(),
|
||||
}
|
||||
|
||||
|
|
|
@ -123,6 +123,10 @@ type NewUserRequest struct {
|
|||
// The value is set when the credential type is CredentialTypeRSAPrivateKey.
|
||||
PublicKey []byte
|
||||
|
||||
// Subject is the distinguished name for the client certificate credential.
|
||||
// Value is set when the credential type is CredentialTypeClientCertificate.
|
||||
Subject string
|
||||
|
||||
// Expiration of the user. Not all database plugins will support this.
|
||||
Expiration time.Time
|
||||
}
|
||||
|
@ -146,6 +150,7 @@ type CredentialType int
|
|||
const (
|
||||
CredentialTypePassword CredentialType = iota
|
||||
CredentialTypeRSAPrivateKey
|
||||
CredentialTypeClientCertificate
|
||||
)
|
||||
|
||||
func (k CredentialType) String() string {
|
||||
|
@ -154,6 +159,8 @@ func (k CredentialType) String() string {
|
|||
return "password"
|
||||
case CredentialTypeRSAPrivateKey:
|
||||
return "rsa_private_key"
|
||||
case CredentialTypeClientCertificate:
|
||||
return "client_certificate"
|
||||
default:
|
||||
return "unknown"
|
||||
}
|
||||
|
|
|
@ -104,6 +104,10 @@ func newUserReqToProto(req NewUserRequest) (*proto.NewUserRequest, error) {
|
|||
if len(req.PublicKey) == 0 {
|
||||
return nil, fmt.Errorf("missing public key credential")
|
||||
}
|
||||
case CredentialTypeClientCertificate:
|
||||
if req.Subject == "" {
|
||||
return nil, fmt.Errorf("missing certificate subject")
|
||||
}
|
||||
default:
|
||||
return nil, fmt.Errorf("unknown credential type")
|
||||
}
|
||||
|
@ -121,6 +125,7 @@ func newUserReqToProto(req NewUserRequest) (*proto.NewUserRequest, error) {
|
|||
CredentialType: int32(req.CredentialType),
|
||||
Password: req.Password,
|
||||
PublicKey: req.PublicKey,
|
||||
Subject: req.Subject,
|
||||
Expiration: expiration,
|
||||
Statements: &proto.Statements{
|
||||
Commands: req.Statements.Commands,
|
||||
|
|
|
@ -152,6 +152,7 @@ func (g *gRPCServer) NewUser(ctx context.Context, req *proto.NewUserRequest) (*p
|
|||
CredentialType: CredentialType(req.GetCredentialType()),
|
||||
Password: req.GetPassword(),
|
||||
PublicKey: req.GetPublicKey(),
|
||||
Subject: req.GetSubject(),
|
||||
Expiration: expiration,
|
||||
Statements: getStatementsFromProto(req.GetStatements()),
|
||||
RollbackStatements: getStatementsFromProto(req.GetRollbackStatements()),
|
||||
|
|
|
@ -142,6 +142,7 @@ type NewUserRequest struct {
|
|||
RollbackStatements *Statements `protobuf:"bytes,5,opt,name=rollback_statements,json=rollbackStatements,proto3" json:"rollback_statements,omitempty"`
|
||||
CredentialType int32 `protobuf:"varint,6,opt,name=credential_type,json=credentialType,proto3" json:"credential_type,omitempty"`
|
||||
PublicKey []byte `protobuf:"bytes,7,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
|
||||
Subject string `protobuf:"bytes,8,opt,name=subject,proto3" json:"subject,omitempty"`
|
||||
}
|
||||
|
||||
func (x *NewUserRequest) Reset() {
|
||||
|
@ -225,6 +226,13 @@ func (x *NewUserRequest) GetPublicKey() []byte {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (x *NewUserRequest) GetSubject() string {
|
||||
if x != nil {
|
||||
return x.Subject
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type UsernameConfig struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
|
@ -869,7 +877,7 @@ var file_sdk_database_dbplugin_v5_proto_database_proto_rawDesc = []byte{
|
|||
0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01,
|
||||
0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x6e,
|
||||
0x66, 0x69, 0x67, 0x44, 0x61, 0x74, 0x61, 0x22, 0xf9, 0x02, 0x0a, 0x0e, 0x4e, 0x65, 0x77, 0x55,
|
||||
0x66, 0x69, 0x67, 0x44, 0x61, 0x74, 0x61, 0x22, 0x93, 0x03, 0x0a, 0x0e, 0x4e, 0x65, 0x77, 0x55,
|
||||
0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x0f, 0x75, 0x73,
|
||||
0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20,
|
||||
0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76,
|
||||
|
@ -893,100 +901,102 @@ var file_sdk_database_dbplugin_v5_proto_database_proto_rawDesc = []byte{
|
|||
0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c,
|
||||
0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b,
|
||||
0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
|
||||
0x4b, 0x65, 0x79, 0x22, 0x50, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x43,
|
||||
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79,
|
||||
0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73,
|
||||
0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65,
|
||||
0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c,
|
||||
0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x2d, 0x0a, 0x0f, 0x4e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72,
|
||||
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72,
|
||||
0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72,
|
||||
0x6e, 0x61, 0x6d, 0x65, 0x22, 0x8d, 0x02, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55,
|
||||
0x4b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x08,
|
||||
0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x50, 0x0a,
|
||||
0x0e, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
|
||||
0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
|
||||
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61,
|
||||
0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
|
||||
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22,
|
||||
0x2d, 0x0a, 0x0f, 0x4e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
|
||||
0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
|
||||
0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x8d,
|
||||
0x02, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71,
|
||||
0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65,
|
||||
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65,
|
||||
0x12, 0x37, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01,
|
||||
0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35,
|
||||
0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52,
|
||||
0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x3d, 0x0a, 0x0a, 0x65, 0x78, 0x70,
|
||||
0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
|
||||
0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x43, 0x68, 0x61, 0x6e,
|
||||
0x67, 0x65, 0x45, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x78,
|
||||
0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c,
|
||||
0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x64,
|
||||
0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67,
|
||||
0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c,
|
||||
0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74,
|
||||
0x69, 0x61, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e,
|
||||
0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x22, 0x6c,
|
||||
0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64,
|
||||
0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64,
|
||||
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77,
|
||||
0x6f, 0x72, 0x64, 0x12, 0x37, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74,
|
||||
0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75, 0x67,
|
||||
0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73,
|
||||
0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x70, 0x0a, 0x0f,
|
||||
0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12,
|
||||
0x24, 0x0a, 0x0e, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65,
|
||||
0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x6e, 0x65, 0x77, 0x50, 0x75, 0x62, 0x6c,
|
||||
0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65,
|
||||
0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x64, 0x62, 0x70, 0x6c,
|
||||
0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e,
|
||||
0x74, 0x73, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x8e,
|
||||
0x01, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0e, 0x6e, 0x65, 0x77, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72,
|
||||
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
|
||||
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
|
||||
0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x6e, 0x65, 0x77, 0x45, 0x78, 0x70, 0x69,
|
||||
0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d,
|
||||
0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x64, 0x62, 0x70,
|
||||
0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65,
|
||||
0x6e, 0x74, 0x73, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22,
|
||||
0x14, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73,
|
||||
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x68, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55,
|
||||
0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73,
|
||||
0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73,
|
||||
0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f,
|
||||
0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75,
|
||||
0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73,
|
||||
0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12,
|
||||
0x3d, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20,
|
||||
0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76,
|
||||
0x35, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69,
|
||||
0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b,
|
||||
0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01,
|
||||
0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35,
|
||||
0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79,
|
||||
0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x63,
|
||||
0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05,
|
||||
0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c,
|
||||
0x54, 0x79, 0x70, 0x65, 0x22, 0x6c, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61,
|
||||
0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x61,
|
||||
0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65,
|
||||
0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x37, 0x0a, 0x0a, 0x73, 0x74, 0x61,
|
||||
0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
|
||||
0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x53, 0x74, 0x61, 0x74,
|
||||
0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e,
|
||||
0x74, 0x73, 0x22, 0x70, 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x75, 0x62, 0x6c,
|
||||
0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x75, 0x62,
|
||||
0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x6e,
|
||||
0x65, 0x77, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x0a, 0x73,
|
||||
0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
|
||||
0x17, 0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x53, 0x74,
|
||||
0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d,
|
||||
0x65, 0x6e, 0x74, 0x73, 0x22, 0x8e, 0x01, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45,
|
||||
0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0e, 0x6e, 0x65, 0x77,
|
||||
0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
|
||||
0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x6e,
|
||||
0x65, 0x77, 0x45, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x0a,
|
||||
0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
|
||||
0x32, 0x17, 0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x53,
|
||||
0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65,
|
||||
0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55,
|
||||
0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x68, 0x0a, 0x11, 0x44,
|
||||
0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||
0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
|
||||
0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x0a,
|
||||
0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
|
||||
0x32, 0x17, 0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x53,
|
||||
0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65,
|
||||
0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55,
|
||||
0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x0a, 0x0c, 0x54,
|
||||
0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54,
|
||||
0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x22,
|
||||
0x28, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1a, 0x0a,
|
||||
0x08, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
|
||||
0x08, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70,
|
||||
0x74, 0x79, 0x32, 0xa5, 0x03, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12,
|
||||
0x4d, 0x0a, 0x0a, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x12, 0x1e, 0x2e,
|
||||
0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x49, 0x6e, 0x69, 0x74,
|
||||
0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e,
|
||||
0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x49, 0x6e, 0x69, 0x74,
|
||||
0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44,
|
||||
0x0a, 0x07, 0x4e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x64, 0x62, 0x70, 0x6c,
|
||||
0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x4e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x52,
|
||||
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69,
|
||||
0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x4e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70,
|
||||
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73,
|
||||
0x65, 0x72, 0x12, 0x1e, 0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35,
|
||||
0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
|
||||
0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35,
|
||||
0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
|
||||
0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65,
|
||||
0x72, 0x12, 0x1e, 0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e,
|
||||
0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||
0x74, 0x1a, 0x1f, 0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e,
|
||||
0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
|
||||
0x73, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x2e, 0x64, 0x62, 0x70,
|
||||
0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x19,
|
||||
0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x54, 0x79, 0x70,
|
||||
0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x05, 0x43, 0x6c, 0x6f,
|
||||
0x73, 0x65, 0x12, 0x12, 0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35,
|
||||
0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69,
|
||||
0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x3b, 0x5a, 0x39, 0x67, 0x69,
|
||||
0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f,
|
||||
0x72, 0x70, 0x2f, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x64, 0x61, 0x74,
|
||||
0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2f, 0x76,
|
||||
0x35, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d,
|
||||
0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x64, 0x62, 0x70,
|
||||
0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65,
|
||||
0x6e, 0x74, 0x73, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22,
|
||||
0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73,
|
||||
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x0a, 0x0c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73,
|
||||
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
|
||||
0x01, 0x28, 0x09, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x22, 0x28, 0x0a, 0x0a, 0x53, 0x74, 0x61,
|
||||
0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x6d, 0x6d, 0x61,
|
||||
0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x43, 0x6f, 0x6d, 0x6d, 0x61,
|
||||
0x6e, 0x64, 0x73, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x32, 0xa5, 0x03, 0x0a,
|
||||
0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0a, 0x49, 0x6e, 0x69,
|
||||
0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x12, 0x1e, 0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75, 0x67,
|
||||
0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65,
|
||||
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75, 0x67,
|
||||
0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65,
|
||||
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x07, 0x4e, 0x65, 0x77, 0x55,
|
||||
0x73, 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76,
|
||||
0x35, 0x2e, 0x4e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||
0x1a, 0x1c, 0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x4e,
|
||||
0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d,
|
||||
0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1e, 0x2e, 0x64,
|
||||
0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
|
||||
0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x64,
|
||||
0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
|
||||
0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a,
|
||||
0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1e, 0x2e, 0x64, 0x62,
|
||||
0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
|
||||
0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x64, 0x62,
|
||||
0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
|
||||
0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x04,
|
||||
0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e,
|
||||
0x76, 0x35, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x19, 0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75,
|
||||
0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
|
||||
0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x05, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x12, 0x12, 0x2e, 0x64,
|
||||
0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
|
||||
0x1a, 0x12, 0x2e, 0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2e, 0x76, 0x35, 0x2e, 0x45,
|
||||
0x6d, 0x70, 0x74, 0x79, 0x42, 0x3b, 0x5a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
|
||||
0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x76, 0x61, 0x75,
|
||||
0x6c, 0x74, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f,
|
||||
0x64, 0x62, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2f, 0x76, 0x35, 0x2f, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
|
|
|
@ -32,6 +32,7 @@ message NewUserRequest {
|
|||
Statements rollback_statements = 5;
|
||||
int32 credential_type = 6;
|
||||
bytes public_key = 7;
|
||||
string subject = 8;
|
||||
}
|
||||
|
||||
message UsernameConfig {
|
||||
|
|
Loading…
Reference in New Issue