Add VNet RPC to perform the session-bound MFA ceremony for in-band. (#66226)

Signed-off-by: Chris Thach <[email protected]>
This commit is contained in:
Chris Thach
2026-05-06 23:46:50 +00:00
committed by GitHub
parent d12492adca
commit f266f57714
6 changed files with 462 additions and 168 deletions
@@ -93,6 +93,63 @@ func (Hash) EnumDescriptor() ([]byte, []int) {
return file_teleport_lib_vnet_v1_client_application_service_proto_rawDescGZIP(), []int{0}
}
// SessionSSHConfigCredentialMode selects how the client application should build SSH config for a VNet SSH session.
//
// The VNet admin side decides whether it is making the first direct attempt or retrying after that attempt failed. The
// client application uses this mode to choose the corresponding credential path.
type SessionSSHConfigCredentialMode int32
const (
SessionSSHConfigCredentialMode_SESSION_SSH_CONFIG_CREDENTIAL_MODE_UNSPECIFIED SessionSSHConfigCredentialMode = 0
// SESSION_SSH_CONFIG_CREDENTIAL_MODE_MFA_CERT retries after the direct attempt failed and falls back to issuing a
// legacy per-session MFA cert.
SessionSSHConfigCredentialMode_SESSION_SSH_CONFIG_CREDENTIAL_MODE_MFA_CERT SessionSSHConfigCredentialMode = 1
// SESSION_SSH_CONFIG_CREDENTIAL_MODE_DIRECT uses the user's existing SSH cert so in-band MFA can happen during the
// SSH handshake if needed.
SessionSSHConfigCredentialMode_SESSION_SSH_CONFIG_CREDENTIAL_MODE_DIRECT SessionSSHConfigCredentialMode = 2
)
// Enum value maps for SessionSSHConfigCredentialMode.
var (
SessionSSHConfigCredentialMode_name = map[int32]string{
0: "SESSION_SSH_CONFIG_CREDENTIAL_MODE_UNSPECIFIED",
1: "SESSION_SSH_CONFIG_CREDENTIAL_MODE_MFA_CERT",
2: "SESSION_SSH_CONFIG_CREDENTIAL_MODE_DIRECT",
}
SessionSSHConfigCredentialMode_value = map[string]int32{
"SESSION_SSH_CONFIG_CREDENTIAL_MODE_UNSPECIFIED": 0,
"SESSION_SSH_CONFIG_CREDENTIAL_MODE_MFA_CERT": 1,
"SESSION_SSH_CONFIG_CREDENTIAL_MODE_DIRECT": 2,
}
)
func (x SessionSSHConfigCredentialMode) Enum() *SessionSSHConfigCredentialMode {
p := new(SessionSSHConfigCredentialMode)
*p = x
return p
}
func (x SessionSSHConfigCredentialMode) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SessionSSHConfigCredentialMode) Descriptor() protoreflect.EnumDescriptor {
return file_teleport_lib_vnet_v1_client_application_service_proto_enumTypes[1].Descriptor()
}
func (SessionSSHConfigCredentialMode) Type() protoreflect.EnumType {
return &file_teleport_lib_vnet_v1_client_application_service_proto_enumTypes[1]
}
func (x SessionSSHConfigCredentialMode) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use SessionSSHConfigCredentialMode.Descriptor instead.
func (SessionSSHConfigCredentialMode) EnumDescriptor() ([]byte, []int) {
return file_teleport_lib_vnet_v1_client_application_service_proto_rawDescGZIP(), []int{1}
}
// AuthenticateProcessRequest is a request for AuthenticateProcess.
type AuthenticateProcessRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -1803,9 +1860,11 @@ type SessionSSHConfigRequest struct {
// Address is the address of the SSH server.
Address string `protobuf:"bytes,4,opt,name=address,proto3" json:"address,omitempty"`
// User is the SSH user the session is for.
User string `protobuf:"bytes,5,opt,name=user,proto3" json:"user,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
User string `protobuf:"bytes,5,opt,name=user,proto3" json:"user,omitempty"`
// Selects the credential path for this request.
CredentialMode SessionSSHConfigCredentialMode `protobuf:"varint,6,opt,name=credential_mode,json=credentialMode,proto3,enum=teleport.lib.vnet.v1.SessionSSHConfigCredentialMode" json:"credential_mode,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *SessionSSHConfigRequest) Reset() {
@@ -1873,6 +1932,13 @@ func (x *SessionSSHConfigRequest) GetUser() string {
return ""
}
func (x *SessionSSHConfigRequest) GetCredentialMode() SessionSSHConfigCredentialMode {
if x != nil {
return x.CredentialMode
}
return SessionSSHConfigCredentialMode_SESSION_SSH_CONFIG_CREDENTIAL_MODE_UNSPECIFIED
}
// SessionSSHConfigResponse is a response for SessionSSHConfig.
type SessionSSHConfigResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -2136,6 +2202,116 @@ func (x *ExchangeSSHKeysResponse) GetUserPublicKey() []byte {
return nil
}
// PerformSessionMFACeremonyRequest is a request for PerformSessionMFACeremony.
type PerformSessionMFACeremonyRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Profile in which the target is found.
Profile string `protobuf:"bytes,1,opt,name=profile,proto3" json:"profile,omitempty"`
// Leaf cluster in which the target is found. If empty, the target is in the root cluster.
LeafCluster string `protobuf:"bytes,2,opt,name=leaf_cluster,json=leafCluster,proto3" json:"leaf_cluster,omitempty"`
// Identifies the SSH session that the MFA ceremony should be bound to.
SshSessionId []byte `protobuf:"bytes,3,opt,name=ssh_session_id,json=sshSessionId,proto3" json:"ssh_session_id,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *PerformSessionMFACeremonyRequest) Reset() {
*x = PerformSessionMFACeremonyRequest{}
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[37]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *PerformSessionMFACeremonyRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PerformSessionMFACeremonyRequest) ProtoMessage() {}
func (x *PerformSessionMFACeremonyRequest) ProtoReflect() protoreflect.Message {
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[37]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use PerformSessionMFACeremonyRequest.ProtoReflect.Descriptor instead.
func (*PerformSessionMFACeremonyRequest) Descriptor() ([]byte, []int) {
return file_teleport_lib_vnet_v1_client_application_service_proto_rawDescGZIP(), []int{37}
}
func (x *PerformSessionMFACeremonyRequest) GetProfile() string {
if x != nil {
return x.Profile
}
return ""
}
func (x *PerformSessionMFACeremonyRequest) GetLeafCluster() string {
if x != nil {
return x.LeafCluster
}
return ""
}
func (x *PerformSessionMFACeremonyRequest) GetSshSessionId() []byte {
if x != nil {
return x.SshSessionId
}
return nil
}
// PerformSessionMFACeremonyResponse is a response for PerformSessionMFACeremony.
type PerformSessionMFACeremonyResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
// The name of the completed MFA challenge.
ChallengeName string `protobuf:"bytes,1,opt,name=challenge_name,json=challengeName,proto3" json:"challenge_name,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *PerformSessionMFACeremonyResponse) Reset() {
*x = PerformSessionMFACeremonyResponse{}
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[38]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *PerformSessionMFACeremonyResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PerformSessionMFACeremonyResponse) ProtoMessage() {}
func (x *PerformSessionMFACeremonyResponse) ProtoReflect() protoreflect.Message {
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[38]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use PerformSessionMFACeremonyResponse.ProtoReflect.Descriptor instead.
func (*PerformSessionMFACeremonyResponse) Descriptor() ([]byte, []int) {
return file_teleport_lib_vnet_v1_client_application_service_proto_rawDescGZIP(), []int{38}
}
func (x *PerformSessionMFACeremonyResponse) GetChallengeName() string {
if x != nil {
return x.ChallengeName
}
return ""
}
// MatchedDatabase holds info about a database that matched a query.
type MatchedDatabase struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -2147,7 +2323,7 @@ type MatchedDatabase struct {
func (x *MatchedDatabase) Reset() {
*x = MatchedDatabase{}
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[37]
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[39]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2159,7 +2335,7 @@ func (x *MatchedDatabase) String() string {
func (*MatchedDatabase) ProtoMessage() {}
func (x *MatchedDatabase) ProtoReflect() protoreflect.Message {
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[37]
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[39]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2172,7 +2348,7 @@ func (x *MatchedDatabase) ProtoReflect() protoreflect.Message {
// Deprecated: Use MatchedDatabase.ProtoReflect.Descriptor instead.
func (*MatchedDatabase) Descriptor() ([]byte, []int) {
return file_teleport_lib_vnet_v1_client_application_service_proto_rawDescGZIP(), []int{37}
return file_teleport_lib_vnet_v1_client_application_service_proto_rawDescGZIP(), []int{39}
}
func (x *MatchedDatabase) GetDatabaseInfo() *DatabaseInfo {
@@ -2204,7 +2380,7 @@ type DatabaseInfo struct {
func (x *DatabaseInfo) Reset() {
*x = DatabaseInfo{}
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[38]
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[40]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2216,7 +2392,7 @@ func (x *DatabaseInfo) String() string {
func (*DatabaseInfo) ProtoMessage() {}
func (x *DatabaseInfo) ProtoReflect() protoreflect.Message {
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[38]
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[40]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2229,7 +2405,7 @@ func (x *DatabaseInfo) ProtoReflect() protoreflect.Message {
// Deprecated: Use DatabaseInfo.ProtoReflect.Descriptor instead.
func (*DatabaseInfo) Descriptor() ([]byte, []int) {
return file_teleport_lib_vnet_v1_client_application_service_proto_rawDescGZIP(), []int{38}
return file_teleport_lib_vnet_v1_client_application_service_proto_rawDescGZIP(), []int{40}
}
func (x *DatabaseInfo) GetDatabaseKey() *DatabaseKey {
@@ -2283,7 +2459,7 @@ type DatabaseKey struct {
func (x *DatabaseKey) Reset() {
*x = DatabaseKey{}
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[39]
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[41]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2295,7 +2471,7 @@ func (x *DatabaseKey) String() string {
func (*DatabaseKey) ProtoMessage() {}
func (x *DatabaseKey) ProtoReflect() protoreflect.Message {
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[39]
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[41]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2308,7 +2484,7 @@ func (x *DatabaseKey) ProtoReflect() protoreflect.Message {
// Deprecated: Use DatabaseKey.ProtoReflect.Descriptor instead.
func (*DatabaseKey) Descriptor() ([]byte, []int) {
return file_teleport_lib_vnet_v1_client_application_service_proto_rawDescGZIP(), []int{39}
return file_teleport_lib_vnet_v1_client_application_service_proto_rawDescGZIP(), []int{41}
}
func (x *DatabaseKey) GetProfile() string {
@@ -2344,7 +2520,7 @@ type ReissueDBCertRequest struct {
func (x *ReissueDBCertRequest) Reset() {
*x = ReissueDBCertRequest{}
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[40]
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[42]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2356,7 +2532,7 @@ func (x *ReissueDBCertRequest) String() string {
func (*ReissueDBCertRequest) ProtoMessage() {}
func (x *ReissueDBCertRequest) ProtoReflect() protoreflect.Message {
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[40]
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[42]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2369,7 +2545,7 @@ func (x *ReissueDBCertRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use ReissueDBCertRequest.ProtoReflect.Descriptor instead.
func (*ReissueDBCertRequest) Descriptor() ([]byte, []int) {
return file_teleport_lib_vnet_v1_client_application_service_proto_rawDescGZIP(), []int{40}
return file_teleport_lib_vnet_v1_client_application_service_proto_rawDescGZIP(), []int{42}
}
func (x *ReissueDBCertRequest) GetDatabaseInfo() *DatabaseInfo {
@@ -2390,7 +2566,7 @@ type ReissueDBCertResponse struct {
func (x *ReissueDBCertResponse) Reset() {
*x = ReissueDBCertResponse{}
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[41]
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[43]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2402,7 +2578,7 @@ func (x *ReissueDBCertResponse) String() string {
func (*ReissueDBCertResponse) ProtoMessage() {}
func (x *ReissueDBCertResponse) ProtoReflect() protoreflect.Message {
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[41]
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[43]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2415,7 +2591,7 @@ func (x *ReissueDBCertResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use ReissueDBCertResponse.ProtoReflect.Descriptor instead.
func (*ReissueDBCertResponse) Descriptor() ([]byte, []int) {
return file_teleport_lib_vnet_v1_client_application_service_proto_rawDescGZIP(), []int{41}
return file_teleport_lib_vnet_v1_client_application_service_proto_rawDescGZIP(), []int{43}
}
func (x *ReissueDBCertResponse) GetCert() []byte {
@@ -2442,7 +2618,7 @@ type SignForDBRequest struct {
func (x *SignForDBRequest) Reset() {
*x = SignForDBRequest{}
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[42]
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[44]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2454,7 +2630,7 @@ func (x *SignForDBRequest) String() string {
func (*SignForDBRequest) ProtoMessage() {}
func (x *SignForDBRequest) ProtoReflect() protoreflect.Message {
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[42]
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[44]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2467,7 +2643,7 @@ func (x *SignForDBRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use SignForDBRequest.ProtoReflect.Descriptor instead.
func (*SignForDBRequest) Descriptor() ([]byte, []int) {
return file_teleport_lib_vnet_v1_client_application_service_proto_rawDescGZIP(), []int{42}
return file_teleport_lib_vnet_v1_client_application_service_proto_rawDescGZIP(), []int{44}
}
func (x *SignForDBRequest) GetDatabaseKey() *DatabaseKey {
@@ -2495,7 +2671,7 @@ type SignForDBResponse struct {
func (x *SignForDBResponse) Reset() {
*x = SignForDBResponse{}
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[43]
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[45]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2507,7 +2683,7 @@ func (x *SignForDBResponse) String() string {
func (*SignForDBResponse) ProtoMessage() {}
func (x *SignForDBResponse) ProtoReflect() protoreflect.Message {
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[43]
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[45]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2520,7 +2696,7 @@ func (x *SignForDBResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use SignForDBResponse.ProtoReflect.Descriptor instead.
func (*SignForDBResponse) Descriptor() ([]byte, []int) {
return file_teleport_lib_vnet_v1_client_application_service_proto_rawDescGZIP(), []int{43}
return file_teleport_lib_vnet_v1_client_application_service_proto_rawDescGZIP(), []int{45}
}
func (x *SignForDBResponse) GetSignature() []byte {
@@ -2541,7 +2717,7 @@ type OnNewDBConnectionRequest struct {
func (x *OnNewDBConnectionRequest) Reset() {
*x = OnNewDBConnectionRequest{}
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[44]
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[46]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2553,7 +2729,7 @@ func (x *OnNewDBConnectionRequest) String() string {
func (*OnNewDBConnectionRequest) ProtoMessage() {}
func (x *OnNewDBConnectionRequest) ProtoReflect() protoreflect.Message {
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[44]
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[46]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2566,7 +2742,7 @@ func (x *OnNewDBConnectionRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use OnNewDBConnectionRequest.ProtoReflect.Descriptor instead.
func (*OnNewDBConnectionRequest) Descriptor() ([]byte, []int) {
return file_teleport_lib_vnet_v1_client_application_service_proto_rawDescGZIP(), []int{44}
return file_teleport_lib_vnet_v1_client_application_service_proto_rawDescGZIP(), []int{46}
}
func (x *OnNewDBConnectionRequest) GetDatabaseKey() *DatabaseKey {
@@ -2585,7 +2761,7 @@ type OnNewDBConnectionResponse struct {
func (x *OnNewDBConnectionResponse) Reset() {
*x = OnNewDBConnectionResponse{}
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[45]
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[47]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2597,7 +2773,7 @@ func (x *OnNewDBConnectionResponse) String() string {
func (*OnNewDBConnectionResponse) ProtoMessage() {}
func (x *OnNewDBConnectionResponse) ProtoReflect() protoreflect.Message {
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[45]
mi := &file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes[47]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2610,7 +2786,7 @@ func (x *OnNewDBConnectionResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use OnNewDBConnectionResponse.ProtoReflect.Descriptor instead.
func (*OnNewDBConnectionResponse) Descriptor() ([]byte, []int) {
return file_teleport_lib_vnet_v1_client_application_service_proto_rawDescGZIP(), []int{45}
return file_teleport_lib_vnet_v1_client_application_service_proto_rawDescGZIP(), []int{47}
}
var File_teleport_lib_vnet_v1_client_application_service_proto protoreflect.FileDescriptor
@@ -2706,13 +2882,14 @@ const file_teleport_lib_vnet_v1_client_application_service_proto_rawDesc = "" +
"\aprofile\x18\x01 \x01(\tR\aprofile\x125\n" +
"\x04sign\x18\x02 \x01(\v2!.teleport.lib.vnet.v1.SignRequestR\x04sign\"6\n" +
"\x16SignForUserTLSResponse\x12\x1c\n" +
"\tsignature\x18\x01 \x01(\fR\tsignature\"\xa7\x01\n" +
"\tsignature\x18\x01 \x01(\fR\tsignature\"\x86\x02\n" +
"\x17SessionSSHConfigRequest\x12\x18\n" +
"\aprofile\x18\x01 \x01(\tR\aprofile\x12!\n" +
"\froot_cluster\x18\x02 \x01(\tR\vrootCluster\x12!\n" +
"\fleaf_cluster\x18\x03 \x01(\tR\vleafCluster\x12\x18\n" +
"\aaddress\x18\x04 \x01(\tR\aaddress\x12\x12\n" +
"\x04user\x18\x05 \x01(\tR\x04user\"n\n" +
"\x04user\x18\x05 \x01(\tR\x04user\x12]\n" +
"\x0fcredential_mode\x18\x06 \x01(\x0e24.teleport.lib.vnet.v1.SessionSSHConfigCredentialModeR\x0ecredentialMode\"n\n" +
"\x18SessionSSHConfigResponse\x12\x1d\n" +
"\n" +
"session_id\x18\x01 \x01(\tR\tsessionId\x12\x12\n" +
@@ -2728,7 +2905,13 @@ const file_teleport_lib_vnet_v1_client_application_service_proto_rawDesc = "" +
"\x16ExchangeSSHKeysRequest\x12&\n" +
"\x0fhost_public_key\x18\x01 \x01(\fR\rhostPublicKey\"A\n" +
"\x17ExchangeSSHKeysResponse\x12&\n" +
"\x0fuser_public_key\x18\x01 \x01(\fR\ruserPublicKey\"Z\n" +
"\x0fuser_public_key\x18\x01 \x01(\fR\ruserPublicKey\"\x85\x01\n" +
" PerformSessionMFACeremonyRequest\x12\x18\n" +
"\aprofile\x18\x01 \x01(\tR\aprofile\x12!\n" +
"\fleaf_cluster\x18\x02 \x01(\tR\vleafCluster\x12$\n" +
"\x0essh_session_id\x18\x03 \x01(\fR\fsshSessionId\"J\n" +
"!PerformSessionMFACeremonyResponse\x12%\n" +
"\x0echallenge_name\x18\x01 \x01(\tR\rchallengeName\"Z\n" +
"\x0fMatchedDatabase\x12G\n" +
"\rdatabase_info\x18\x01 \x01(\v2\".teleport.lib.vnet.v1.DatabaseInfoR\fdatabaseInfo\"\xf8\x01\n" +
"\fDatabaseInfo\x12D\n" +
@@ -2756,7 +2939,11 @@ const file_teleport_lib_vnet_v1_client_application_service_proto_rawDesc = "" +
"\x04Hash\x12\x14\n" +
"\x10HASH_UNSPECIFIED\x10\x00\x12\r\n" +
"\tHASH_NONE\x10\x01\x12\x0f\n" +
"\vHASH_SHA256\x10\x022\x83\x0f\n" +
"\vHASH_SHA256\x10\x02*\xb4\x01\n" +
"\x1eSessionSSHConfigCredentialMode\x122\n" +
".SESSION_SSH_CONFIG_CREDENTIAL_MODE_UNSPECIFIED\x10\x00\x12/\n" +
"+SESSION_SSH_CONFIG_CREDENTIAL_MODE_MFA_CERT\x10\x01\x12-\n" +
")SESSION_SSH_CONFIG_CREDENTIAL_MODE_DIRECT\x10\x022\x92\x10\n" +
"\x18ClientApplicationService\x12z\n" +
"\x13AuthenticateProcess\x120.teleport.lib.vnet.v1.AuthenticateProcessRequest\x1a1.teleport.lib.vnet.v1.AuthenticateProcessResponse\x12\x83\x01\n" +
"\x16ReportNetworkStackInfo\x123.teleport.lib.vnet.v1.ReportNetworkStackInfoRequest\x1a4.teleport.lib.vnet.v1.ReportNetworkStackInfoResponse\x12M\n" +
@@ -2772,7 +2959,8 @@ const file_teleport_lib_vnet_v1_client_application_service_proto_rawDesc = "" +
"\x0eSignForUserTLS\x12+.teleport.lib.vnet.v1.SignForUserTLSRequest\x1a,.teleport.lib.vnet.v1.SignForUserTLSResponse\x12q\n" +
"\x10SessionSSHConfig\x12-.teleport.lib.vnet.v1.SessionSSHConfigRequest\x1a..teleport.lib.vnet.v1.SessionSSHConfigResponse\x12t\n" +
"\x11SignForSSHSession\x12..teleport.lib.vnet.v1.SignForSSHSessionRequest\x1a/.teleport.lib.vnet.v1.SignForSSHSessionResponse\x12n\n" +
"\x0fExchangeSSHKeys\x12,.teleport.lib.vnet.v1.ExchangeSSHKeysRequest\x1a-.teleport.lib.vnet.v1.ExchangeSSHKeysResponse\x12h\n" +
"\x0fExchangeSSHKeys\x12,.teleport.lib.vnet.v1.ExchangeSSHKeysRequest\x1a-.teleport.lib.vnet.v1.ExchangeSSHKeysResponse\x12\x8c\x01\n" +
"\x19PerformSessionMFACeremony\x126.teleport.lib.vnet.v1.PerformSessionMFACeremonyRequest\x1a7.teleport.lib.vnet.v1.PerformSessionMFACeremonyResponse\x12h\n" +
"\rReissueDBCert\x12*.teleport.lib.vnet.v1.ReissueDBCertRequest\x1a+.teleport.lib.vnet.v1.ReissueDBCertResponse\x12\\\n" +
"\tSignForDB\x12&.teleport.lib.vnet.v1.SignForDBRequest\x1a'.teleport.lib.vnet.v1.SignForDBResponse\x12t\n" +
"\x11OnNewDBConnection\x12..teleport.lib.vnet.v1.OnNewDBConnectionRequest\x1a/.teleport.lib.vnet.v1.OnNewDBConnectionResponseBLZJgithub.com/gravitational/teleport/gen/proto/go/teleport/lib/vnet/v1;vnetv1b\x06proto3"
@@ -2789,124 +2977,130 @@ func file_teleport_lib_vnet_v1_client_application_service_proto_rawDescGZIP() []
return file_teleport_lib_vnet_v1_client_application_service_proto_rawDescData
}
var file_teleport_lib_vnet_v1_client_application_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes = make([]protoimpl.MessageInfo, 46)
var file_teleport_lib_vnet_v1_client_application_service_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_teleport_lib_vnet_v1_client_application_service_proto_msgTypes = make([]protoimpl.MessageInfo, 48)
var file_teleport_lib_vnet_v1_client_application_service_proto_goTypes = []any{
(Hash)(0), // 0: teleport.lib.vnet.v1.Hash
(*AuthenticateProcessRequest)(nil), // 1: teleport.lib.vnet.v1.AuthenticateProcessRequest
(*AuthenticateProcessResponse)(nil), // 2: teleport.lib.vnet.v1.AuthenticateProcessResponse
(*ReportNetworkStackInfoRequest)(nil), // 3: teleport.lib.vnet.v1.ReportNetworkStackInfoRequest
(*NetworkStackInfo)(nil), // 4: teleport.lib.vnet.v1.NetworkStackInfo
(*ReportNetworkStackInfoResponse)(nil), // 5: teleport.lib.vnet.v1.ReportNetworkStackInfoResponse
(*PingRequest)(nil), // 6: teleport.lib.vnet.v1.PingRequest
(*PingResponse)(nil), // 7: teleport.lib.vnet.v1.PingResponse
(*ResolveFQDNRequest)(nil), // 8: teleport.lib.vnet.v1.ResolveFQDNRequest
(*ResolveFQDNResponse)(nil), // 9: teleport.lib.vnet.v1.ResolveFQDNResponse
(*MatchedTCPApp)(nil), // 10: teleport.lib.vnet.v1.MatchedTCPApp
(*MatchedWebApp)(nil), // 11: teleport.lib.vnet.v1.MatchedWebApp
(*MatchedCluster)(nil), // 12: teleport.lib.vnet.v1.MatchedCluster
(*AppInfo)(nil), // 13: teleport.lib.vnet.v1.AppInfo
(*AppKey)(nil), // 14: teleport.lib.vnet.v1.AppKey
(*DialOptions)(nil), // 15: teleport.lib.vnet.v1.DialOptions
(*ReissueAppCertRequest)(nil), // 16: teleport.lib.vnet.v1.ReissueAppCertRequest
(*ReissueAppCertResponse)(nil), // 17: teleport.lib.vnet.v1.ReissueAppCertResponse
(*SignForAppRequest)(nil), // 18: teleport.lib.vnet.v1.SignForAppRequest
(*SignRequest)(nil), // 19: teleport.lib.vnet.v1.SignRequest
(*SignForAppResponse)(nil), // 20: teleport.lib.vnet.v1.SignForAppResponse
(*OnNewAppConnectionRequest)(nil), // 21: teleport.lib.vnet.v1.OnNewAppConnectionRequest
(*OnNewAppConnectionResponse)(nil), // 22: teleport.lib.vnet.v1.OnNewAppConnectionResponse
(*OnInvalidLocalPortRequest)(nil), // 23: teleport.lib.vnet.v1.OnInvalidLocalPortRequest
(*OnInvalidLocalPortResponse)(nil), // 24: teleport.lib.vnet.v1.OnInvalidLocalPortResponse
(*GetTargetOSConfigurationRequest)(nil), // 25: teleport.lib.vnet.v1.GetTargetOSConfigurationRequest
(*GetTargetOSConfigurationResponse)(nil), // 26: teleport.lib.vnet.v1.GetTargetOSConfigurationResponse
(*TargetOSConfiguration)(nil), // 27: teleport.lib.vnet.v1.TargetOSConfiguration
(*UserTLSCertRequest)(nil), // 28: teleport.lib.vnet.v1.UserTLSCertRequest
(*UserTLSCertResponse)(nil), // 29: teleport.lib.vnet.v1.UserTLSCertResponse
(*SignForUserTLSRequest)(nil), // 30: teleport.lib.vnet.v1.SignForUserTLSRequest
(*SignForUserTLSResponse)(nil), // 31: teleport.lib.vnet.v1.SignForUserTLSResponse
(*SessionSSHConfigRequest)(nil), // 32: teleport.lib.vnet.v1.SessionSSHConfigRequest
(*SessionSSHConfigResponse)(nil), // 33: teleport.lib.vnet.v1.SessionSSHConfigResponse
(*SignForSSHSessionRequest)(nil), // 34: teleport.lib.vnet.v1.SignForSSHSessionRequest
(*SignForSSHSessionResponse)(nil), // 35: teleport.lib.vnet.v1.SignForSSHSessionResponse
(*ExchangeSSHKeysRequest)(nil), // 36: teleport.lib.vnet.v1.ExchangeSSHKeysRequest
(*ExchangeSSHKeysResponse)(nil), // 37: teleport.lib.vnet.v1.ExchangeSSHKeysResponse
(*MatchedDatabase)(nil), // 38: teleport.lib.vnet.v1.MatchedDatabase
(*DatabaseInfo)(nil), // 39: teleport.lib.vnet.v1.DatabaseInfo
(*DatabaseKey)(nil), // 40: teleport.lib.vnet.v1.DatabaseKey
(*ReissueDBCertRequest)(nil), // 41: teleport.lib.vnet.v1.ReissueDBCertRequest
(*ReissueDBCertResponse)(nil), // 42: teleport.lib.vnet.v1.ReissueDBCertResponse
(*SignForDBRequest)(nil), // 43: teleport.lib.vnet.v1.SignForDBRequest
(*SignForDBResponse)(nil), // 44: teleport.lib.vnet.v1.SignForDBResponse
(*OnNewDBConnectionRequest)(nil), // 45: teleport.lib.vnet.v1.OnNewDBConnectionRequest
(*OnNewDBConnectionResponse)(nil), // 46: teleport.lib.vnet.v1.OnNewDBConnectionResponse
(*types.AppV3)(nil), // 47: types.AppV3
(Hash)(0), // 0: teleport.lib.vnet.v1.Hash
(SessionSSHConfigCredentialMode)(0), // 1: teleport.lib.vnet.v1.SessionSSHConfigCredentialMode
(*AuthenticateProcessRequest)(nil), // 2: teleport.lib.vnet.v1.AuthenticateProcessRequest
(*AuthenticateProcessResponse)(nil), // 3: teleport.lib.vnet.v1.AuthenticateProcessResponse
(*ReportNetworkStackInfoRequest)(nil), // 4: teleport.lib.vnet.v1.ReportNetworkStackInfoRequest
(*NetworkStackInfo)(nil), // 5: teleport.lib.vnet.v1.NetworkStackInfo
(*ReportNetworkStackInfoResponse)(nil), // 6: teleport.lib.vnet.v1.ReportNetworkStackInfoResponse
(*PingRequest)(nil), // 7: teleport.lib.vnet.v1.PingRequest
(*PingResponse)(nil), // 8: teleport.lib.vnet.v1.PingResponse
(*ResolveFQDNRequest)(nil), // 9: teleport.lib.vnet.v1.ResolveFQDNRequest
(*ResolveFQDNResponse)(nil), // 10: teleport.lib.vnet.v1.ResolveFQDNResponse
(*MatchedTCPApp)(nil), // 11: teleport.lib.vnet.v1.MatchedTCPApp
(*MatchedWebApp)(nil), // 12: teleport.lib.vnet.v1.MatchedWebApp
(*MatchedCluster)(nil), // 13: teleport.lib.vnet.v1.MatchedCluster
(*AppInfo)(nil), // 14: teleport.lib.vnet.v1.AppInfo
(*AppKey)(nil), // 15: teleport.lib.vnet.v1.AppKey
(*DialOptions)(nil), // 16: teleport.lib.vnet.v1.DialOptions
(*ReissueAppCertRequest)(nil), // 17: teleport.lib.vnet.v1.ReissueAppCertRequest
(*ReissueAppCertResponse)(nil), // 18: teleport.lib.vnet.v1.ReissueAppCertResponse
(*SignForAppRequest)(nil), // 19: teleport.lib.vnet.v1.SignForAppRequest
(*SignRequest)(nil), // 20: teleport.lib.vnet.v1.SignRequest
(*SignForAppResponse)(nil), // 21: teleport.lib.vnet.v1.SignForAppResponse
(*OnNewAppConnectionRequest)(nil), // 22: teleport.lib.vnet.v1.OnNewAppConnectionRequest
(*OnNewAppConnectionResponse)(nil), // 23: teleport.lib.vnet.v1.OnNewAppConnectionResponse
(*OnInvalidLocalPortRequest)(nil), // 24: teleport.lib.vnet.v1.OnInvalidLocalPortRequest
(*OnInvalidLocalPortResponse)(nil), // 25: teleport.lib.vnet.v1.OnInvalidLocalPortResponse
(*GetTargetOSConfigurationRequest)(nil), // 26: teleport.lib.vnet.v1.GetTargetOSConfigurationRequest
(*GetTargetOSConfigurationResponse)(nil), // 27: teleport.lib.vnet.v1.GetTargetOSConfigurationResponse
(*TargetOSConfiguration)(nil), // 28: teleport.lib.vnet.v1.TargetOSConfiguration
(*UserTLSCertRequest)(nil), // 29: teleport.lib.vnet.v1.UserTLSCertRequest
(*UserTLSCertResponse)(nil), // 30: teleport.lib.vnet.v1.UserTLSCertResponse
(*SignForUserTLSRequest)(nil), // 31: teleport.lib.vnet.v1.SignForUserTLSRequest
(*SignForUserTLSResponse)(nil), // 32: teleport.lib.vnet.v1.SignForUserTLSResponse
(*SessionSSHConfigRequest)(nil), // 33: teleport.lib.vnet.v1.SessionSSHConfigRequest
(*SessionSSHConfigResponse)(nil), // 34: teleport.lib.vnet.v1.SessionSSHConfigResponse
(*SignForSSHSessionRequest)(nil), // 35: teleport.lib.vnet.v1.SignForSSHSessionRequest
(*SignForSSHSessionResponse)(nil), // 36: teleport.lib.vnet.v1.SignForSSHSessionResponse
(*ExchangeSSHKeysRequest)(nil), // 37: teleport.lib.vnet.v1.ExchangeSSHKeysRequest
(*ExchangeSSHKeysResponse)(nil), // 38: teleport.lib.vnet.v1.ExchangeSSHKeysResponse
(*PerformSessionMFACeremonyRequest)(nil), // 39: teleport.lib.vnet.v1.PerformSessionMFACeremonyRequest
(*PerformSessionMFACeremonyResponse)(nil), // 40: teleport.lib.vnet.v1.PerformSessionMFACeremonyResponse
(*MatchedDatabase)(nil), // 41: teleport.lib.vnet.v1.MatchedDatabase
(*DatabaseInfo)(nil), // 42: teleport.lib.vnet.v1.DatabaseInfo
(*DatabaseKey)(nil), // 43: teleport.lib.vnet.v1.DatabaseKey
(*ReissueDBCertRequest)(nil), // 44: teleport.lib.vnet.v1.ReissueDBCertRequest
(*ReissueDBCertResponse)(nil), // 45: teleport.lib.vnet.v1.ReissueDBCertResponse
(*SignForDBRequest)(nil), // 46: teleport.lib.vnet.v1.SignForDBRequest
(*SignForDBResponse)(nil), // 47: teleport.lib.vnet.v1.SignForDBResponse
(*OnNewDBConnectionRequest)(nil), // 48: teleport.lib.vnet.v1.OnNewDBConnectionRequest
(*OnNewDBConnectionResponse)(nil), // 49: teleport.lib.vnet.v1.OnNewDBConnectionResponse
(*types.AppV3)(nil), // 50: types.AppV3
}
var file_teleport_lib_vnet_v1_client_application_service_proto_depIdxs = []int32{
4, // 0: teleport.lib.vnet.v1.ReportNetworkStackInfoRequest.network_stack_info:type_name -> teleport.lib.vnet.v1.NetworkStackInfo
10, // 1: teleport.lib.vnet.v1.ResolveFQDNResponse.matched_tcp_app:type_name -> teleport.lib.vnet.v1.MatchedTCPApp
11, // 2: teleport.lib.vnet.v1.ResolveFQDNResponse.matched_web_app:type_name -> teleport.lib.vnet.v1.MatchedWebApp
12, // 3: teleport.lib.vnet.v1.ResolveFQDNResponse.matched_cluster:type_name -> teleport.lib.vnet.v1.MatchedCluster
38, // 4: teleport.lib.vnet.v1.ResolveFQDNResponse.matched_database:type_name -> teleport.lib.vnet.v1.MatchedDatabase
13, // 5: teleport.lib.vnet.v1.MatchedTCPApp.app_info:type_name -> teleport.lib.vnet.v1.AppInfo
14, // 6: teleport.lib.vnet.v1.AppInfo.app_key:type_name -> teleport.lib.vnet.v1.AppKey
47, // 7: teleport.lib.vnet.v1.AppInfo.app:type_name -> types.AppV3
15, // 8: teleport.lib.vnet.v1.AppInfo.dial_options:type_name -> teleport.lib.vnet.v1.DialOptions
13, // 9: teleport.lib.vnet.v1.ReissueAppCertRequest.app_info:type_name -> teleport.lib.vnet.v1.AppInfo
14, // 10: teleport.lib.vnet.v1.SignForAppRequest.app_key:type_name -> teleport.lib.vnet.v1.AppKey
19, // 11: teleport.lib.vnet.v1.SignForAppRequest.sign:type_name -> teleport.lib.vnet.v1.SignRequest
5, // 0: teleport.lib.vnet.v1.ReportNetworkStackInfoRequest.network_stack_info:type_name -> teleport.lib.vnet.v1.NetworkStackInfo
11, // 1: teleport.lib.vnet.v1.ResolveFQDNResponse.matched_tcp_app:type_name -> teleport.lib.vnet.v1.MatchedTCPApp
12, // 2: teleport.lib.vnet.v1.ResolveFQDNResponse.matched_web_app:type_name -> teleport.lib.vnet.v1.MatchedWebApp
13, // 3: teleport.lib.vnet.v1.ResolveFQDNResponse.matched_cluster:type_name -> teleport.lib.vnet.v1.MatchedCluster
41, // 4: teleport.lib.vnet.v1.ResolveFQDNResponse.matched_database:type_name -> teleport.lib.vnet.v1.MatchedDatabase
14, // 5: teleport.lib.vnet.v1.MatchedTCPApp.app_info:type_name -> teleport.lib.vnet.v1.AppInfo
15, // 6: teleport.lib.vnet.v1.AppInfo.app_key:type_name -> teleport.lib.vnet.v1.AppKey
50, // 7: teleport.lib.vnet.v1.AppInfo.app:type_name -> types.AppV3
16, // 8: teleport.lib.vnet.v1.AppInfo.dial_options:type_name -> teleport.lib.vnet.v1.DialOptions
14, // 9: teleport.lib.vnet.v1.ReissueAppCertRequest.app_info:type_name -> teleport.lib.vnet.v1.AppInfo
15, // 10: teleport.lib.vnet.v1.SignForAppRequest.app_key:type_name -> teleport.lib.vnet.v1.AppKey
20, // 11: teleport.lib.vnet.v1.SignForAppRequest.sign:type_name -> teleport.lib.vnet.v1.SignRequest
0, // 12: teleport.lib.vnet.v1.SignRequest.hash:type_name -> teleport.lib.vnet.v1.Hash
14, // 13: teleport.lib.vnet.v1.OnNewAppConnectionRequest.app_key:type_name -> teleport.lib.vnet.v1.AppKey
13, // 14: teleport.lib.vnet.v1.OnInvalidLocalPortRequest.app_info:type_name -> teleport.lib.vnet.v1.AppInfo
27, // 15: teleport.lib.vnet.v1.GetTargetOSConfigurationResponse.target_os_configuration:type_name -> teleport.lib.vnet.v1.TargetOSConfiguration
15, // 16: teleport.lib.vnet.v1.UserTLSCertResponse.dial_options:type_name -> teleport.lib.vnet.v1.DialOptions
19, // 17: teleport.lib.vnet.v1.SignForUserTLSRequest.sign:type_name -> teleport.lib.vnet.v1.SignRequest
19, // 18: teleport.lib.vnet.v1.SignForSSHSessionRequest.sign:type_name -> teleport.lib.vnet.v1.SignRequest
39, // 19: teleport.lib.vnet.v1.MatchedDatabase.database_info:type_name -> teleport.lib.vnet.v1.DatabaseInfo
40, // 20: teleport.lib.vnet.v1.DatabaseInfo.database_key:type_name -> teleport.lib.vnet.v1.DatabaseKey
15, // 21: teleport.lib.vnet.v1.DatabaseInfo.dial_options:type_name -> teleport.lib.vnet.v1.DialOptions
39, // 22: teleport.lib.vnet.v1.ReissueDBCertRequest.database_info:type_name -> teleport.lib.vnet.v1.DatabaseInfo
40, // 23: teleport.lib.vnet.v1.SignForDBRequest.database_key:type_name -> teleport.lib.vnet.v1.DatabaseKey
19, // 24: teleport.lib.vnet.v1.SignForDBRequest.sign:type_name -> teleport.lib.vnet.v1.SignRequest
40, // 25: teleport.lib.vnet.v1.OnNewDBConnectionRequest.database_key:type_name -> teleport.lib.vnet.v1.DatabaseKey
1, // 26: teleport.lib.vnet.v1.ClientApplicationService.AuthenticateProcess:input_type -> teleport.lib.vnet.v1.AuthenticateProcessRequest
3, // 27: teleport.lib.vnet.v1.ClientApplicationService.ReportNetworkStackInfo:input_type -> teleport.lib.vnet.v1.ReportNetworkStackInfoRequest
6, // 28: teleport.lib.vnet.v1.ClientApplicationService.Ping:input_type -> teleport.lib.vnet.v1.PingRequest
8, // 29: teleport.lib.vnet.v1.ClientApplicationService.ResolveFQDN:input_type -> teleport.lib.vnet.v1.ResolveFQDNRequest
16, // 30: teleport.lib.vnet.v1.ClientApplicationService.ReissueAppCert:input_type -> teleport.lib.vnet.v1.ReissueAppCertRequest
18, // 31: teleport.lib.vnet.v1.ClientApplicationService.SignForApp:input_type -> teleport.lib.vnet.v1.SignForAppRequest
21, // 32: teleport.lib.vnet.v1.ClientApplicationService.OnNewAppConnection:input_type -> teleport.lib.vnet.v1.OnNewAppConnectionRequest
23, // 33: teleport.lib.vnet.v1.ClientApplicationService.OnInvalidLocalPort:input_type -> teleport.lib.vnet.v1.OnInvalidLocalPortRequest
25, // 34: teleport.lib.vnet.v1.ClientApplicationService.GetTargetOSConfiguration:input_type -> teleport.lib.vnet.v1.GetTargetOSConfigurationRequest
28, // 35: teleport.lib.vnet.v1.ClientApplicationService.UserTLSCert:input_type -> teleport.lib.vnet.v1.UserTLSCertRequest
30, // 36: teleport.lib.vnet.v1.ClientApplicationService.SignForUserTLS:input_type -> teleport.lib.vnet.v1.SignForUserTLSRequest
32, // 37: teleport.lib.vnet.v1.ClientApplicationService.SessionSSHConfig:input_type -> teleport.lib.vnet.v1.SessionSSHConfigRequest
34, // 38: teleport.lib.vnet.v1.ClientApplicationService.SignForSSHSession:input_type -> teleport.lib.vnet.v1.SignForSSHSessionRequest
36, // 39: teleport.lib.vnet.v1.ClientApplicationService.ExchangeSSHKeys:input_type -> teleport.lib.vnet.v1.ExchangeSSHKeysRequest
41, // 40: teleport.lib.vnet.v1.ClientApplicationService.ReissueDBCert:input_type -> teleport.lib.vnet.v1.ReissueDBCertRequest
43, // 41: teleport.lib.vnet.v1.ClientApplicationService.SignForDB:input_type -> teleport.lib.vnet.v1.SignForDBRequest
45, // 42: teleport.lib.vnet.v1.ClientApplicationService.OnNewDBConnection:input_type -> teleport.lib.vnet.v1.OnNewDBConnectionRequest
2, // 43: teleport.lib.vnet.v1.ClientApplicationService.AuthenticateProcess:output_type -> teleport.lib.vnet.v1.AuthenticateProcessResponse
5, // 44: teleport.lib.vnet.v1.ClientApplicationService.ReportNetworkStackInfo:output_type -> teleport.lib.vnet.v1.ReportNetworkStackInfoResponse
7, // 45: teleport.lib.vnet.v1.ClientApplicationService.Ping:output_type -> teleport.lib.vnet.v1.PingResponse
9, // 46: teleport.lib.vnet.v1.ClientApplicationService.ResolveFQDN:output_type -> teleport.lib.vnet.v1.ResolveFQDNResponse
17, // 47: teleport.lib.vnet.v1.ClientApplicationService.ReissueAppCert:output_type -> teleport.lib.vnet.v1.ReissueAppCertResponse
20, // 48: teleport.lib.vnet.v1.ClientApplicationService.SignForApp:output_type -> teleport.lib.vnet.v1.SignForAppResponse
22, // 49: teleport.lib.vnet.v1.ClientApplicationService.OnNewAppConnection:output_type -> teleport.lib.vnet.v1.OnNewAppConnectionResponse
24, // 50: teleport.lib.vnet.v1.ClientApplicationService.OnInvalidLocalPort:output_type -> teleport.lib.vnet.v1.OnInvalidLocalPortResponse
26, // 51: teleport.lib.vnet.v1.ClientApplicationService.GetTargetOSConfiguration:output_type -> teleport.lib.vnet.v1.GetTargetOSConfigurationResponse
29, // 52: teleport.lib.vnet.v1.ClientApplicationService.UserTLSCert:output_type -> teleport.lib.vnet.v1.UserTLSCertResponse
31, // 53: teleport.lib.vnet.v1.ClientApplicationService.SignForUserTLS:output_type -> teleport.lib.vnet.v1.SignForUserTLSResponse
33, // 54: teleport.lib.vnet.v1.ClientApplicationService.SessionSSHConfig:output_type -> teleport.lib.vnet.v1.SessionSSHConfigResponse
35, // 55: teleport.lib.vnet.v1.ClientApplicationService.SignForSSHSession:output_type -> teleport.lib.vnet.v1.SignForSSHSessionResponse
37, // 56: teleport.lib.vnet.v1.ClientApplicationService.ExchangeSSHKeys:output_type -> teleport.lib.vnet.v1.ExchangeSSHKeysResponse
42, // 57: teleport.lib.vnet.v1.ClientApplicationService.ReissueDBCert:output_type -> teleport.lib.vnet.v1.ReissueDBCertResponse
44, // 58: teleport.lib.vnet.v1.ClientApplicationService.SignForDB:output_type -> teleport.lib.vnet.v1.SignForDBResponse
46, // 59: teleport.lib.vnet.v1.ClientApplicationService.OnNewDBConnection:output_type -> teleport.lib.vnet.v1.OnNewDBConnectionResponse
43, // [43:60] is the sub-list for method output_type
26, // [26:43] is the sub-list for method input_type
26, // [26:26] is the sub-list for extension type_name
26, // [26:26] is the sub-list for extension extendee
0, // [0:26] is the sub-list for field type_name
15, // 13: teleport.lib.vnet.v1.OnNewAppConnectionRequest.app_key:type_name -> teleport.lib.vnet.v1.AppKey
14, // 14: teleport.lib.vnet.v1.OnInvalidLocalPortRequest.app_info:type_name -> teleport.lib.vnet.v1.AppInfo
28, // 15: teleport.lib.vnet.v1.GetTargetOSConfigurationResponse.target_os_configuration:type_name -> teleport.lib.vnet.v1.TargetOSConfiguration
16, // 16: teleport.lib.vnet.v1.UserTLSCertResponse.dial_options:type_name -> teleport.lib.vnet.v1.DialOptions
20, // 17: teleport.lib.vnet.v1.SignForUserTLSRequest.sign:type_name -> teleport.lib.vnet.v1.SignRequest
1, // 18: teleport.lib.vnet.v1.SessionSSHConfigRequest.credential_mode:type_name -> teleport.lib.vnet.v1.SessionSSHConfigCredentialMode
20, // 19: teleport.lib.vnet.v1.SignForSSHSessionRequest.sign:type_name -> teleport.lib.vnet.v1.SignRequest
42, // 20: teleport.lib.vnet.v1.MatchedDatabase.database_info:type_name -> teleport.lib.vnet.v1.DatabaseInfo
43, // 21: teleport.lib.vnet.v1.DatabaseInfo.database_key:type_name -> teleport.lib.vnet.v1.DatabaseKey
16, // 22: teleport.lib.vnet.v1.DatabaseInfo.dial_options:type_name -> teleport.lib.vnet.v1.DialOptions
42, // 23: teleport.lib.vnet.v1.ReissueDBCertRequest.database_info:type_name -> teleport.lib.vnet.v1.DatabaseInfo
43, // 24: teleport.lib.vnet.v1.SignForDBRequest.database_key:type_name -> teleport.lib.vnet.v1.DatabaseKey
20, // 25: teleport.lib.vnet.v1.SignForDBRequest.sign:type_name -> teleport.lib.vnet.v1.SignRequest
43, // 26: teleport.lib.vnet.v1.OnNewDBConnectionRequest.database_key:type_name -> teleport.lib.vnet.v1.DatabaseKey
2, // 27: teleport.lib.vnet.v1.ClientApplicationService.AuthenticateProcess:input_type -> teleport.lib.vnet.v1.AuthenticateProcessRequest
4, // 28: teleport.lib.vnet.v1.ClientApplicationService.ReportNetworkStackInfo:input_type -> teleport.lib.vnet.v1.ReportNetworkStackInfoRequest
7, // 29: teleport.lib.vnet.v1.ClientApplicationService.Ping:input_type -> teleport.lib.vnet.v1.PingRequest
9, // 30: teleport.lib.vnet.v1.ClientApplicationService.ResolveFQDN:input_type -> teleport.lib.vnet.v1.ResolveFQDNRequest
17, // 31: teleport.lib.vnet.v1.ClientApplicationService.ReissueAppCert:input_type -> teleport.lib.vnet.v1.ReissueAppCertRequest
19, // 32: teleport.lib.vnet.v1.ClientApplicationService.SignForApp:input_type -> teleport.lib.vnet.v1.SignForAppRequest
22, // 33: teleport.lib.vnet.v1.ClientApplicationService.OnNewAppConnection:input_type -> teleport.lib.vnet.v1.OnNewAppConnectionRequest
24, // 34: teleport.lib.vnet.v1.ClientApplicationService.OnInvalidLocalPort:input_type -> teleport.lib.vnet.v1.OnInvalidLocalPortRequest
26, // 35: teleport.lib.vnet.v1.ClientApplicationService.GetTargetOSConfiguration:input_type -> teleport.lib.vnet.v1.GetTargetOSConfigurationRequest
29, // 36: teleport.lib.vnet.v1.ClientApplicationService.UserTLSCert:input_type -> teleport.lib.vnet.v1.UserTLSCertRequest
31, // 37: teleport.lib.vnet.v1.ClientApplicationService.SignForUserTLS:input_type -> teleport.lib.vnet.v1.SignForUserTLSRequest
33, // 38: teleport.lib.vnet.v1.ClientApplicationService.SessionSSHConfig:input_type -> teleport.lib.vnet.v1.SessionSSHConfigRequest
35, // 39: teleport.lib.vnet.v1.ClientApplicationService.SignForSSHSession:input_type -> teleport.lib.vnet.v1.SignForSSHSessionRequest
37, // 40: teleport.lib.vnet.v1.ClientApplicationService.ExchangeSSHKeys:input_type -> teleport.lib.vnet.v1.ExchangeSSHKeysRequest
39, // 41: teleport.lib.vnet.v1.ClientApplicationService.PerformSessionMFACeremony:input_type -> teleport.lib.vnet.v1.PerformSessionMFACeremonyRequest
44, // 42: teleport.lib.vnet.v1.ClientApplicationService.ReissueDBCert:input_type -> teleport.lib.vnet.v1.ReissueDBCertRequest
46, // 43: teleport.lib.vnet.v1.ClientApplicationService.SignForDB:input_type -> teleport.lib.vnet.v1.SignForDBRequest
48, // 44: teleport.lib.vnet.v1.ClientApplicationService.OnNewDBConnection:input_type -> teleport.lib.vnet.v1.OnNewDBConnectionRequest
3, // 45: teleport.lib.vnet.v1.ClientApplicationService.AuthenticateProcess:output_type -> teleport.lib.vnet.v1.AuthenticateProcessResponse
6, // 46: teleport.lib.vnet.v1.ClientApplicationService.ReportNetworkStackInfo:output_type -> teleport.lib.vnet.v1.ReportNetworkStackInfoResponse
8, // 47: teleport.lib.vnet.v1.ClientApplicationService.Ping:output_type -> teleport.lib.vnet.v1.PingResponse
10, // 48: teleport.lib.vnet.v1.ClientApplicationService.ResolveFQDN:output_type -> teleport.lib.vnet.v1.ResolveFQDNResponse
18, // 49: teleport.lib.vnet.v1.ClientApplicationService.ReissueAppCert:output_type -> teleport.lib.vnet.v1.ReissueAppCertResponse
21, // 50: teleport.lib.vnet.v1.ClientApplicationService.SignForApp:output_type -> teleport.lib.vnet.v1.SignForAppResponse
23, // 51: teleport.lib.vnet.v1.ClientApplicationService.OnNewAppConnection:output_type -> teleport.lib.vnet.v1.OnNewAppConnectionResponse
25, // 52: teleport.lib.vnet.v1.ClientApplicationService.OnInvalidLocalPort:output_type -> teleport.lib.vnet.v1.OnInvalidLocalPortResponse
27, // 53: teleport.lib.vnet.v1.ClientApplicationService.GetTargetOSConfiguration:output_type -> teleport.lib.vnet.v1.GetTargetOSConfigurationResponse
30, // 54: teleport.lib.vnet.v1.ClientApplicationService.UserTLSCert:output_type -> teleport.lib.vnet.v1.UserTLSCertResponse
32, // 55: teleport.lib.vnet.v1.ClientApplicationService.SignForUserTLS:output_type -> teleport.lib.vnet.v1.SignForUserTLSResponse
34, // 56: teleport.lib.vnet.v1.ClientApplicationService.SessionSSHConfig:output_type -> teleport.lib.vnet.v1.SessionSSHConfigResponse
36, // 57: teleport.lib.vnet.v1.ClientApplicationService.SignForSSHSession:output_type -> teleport.lib.vnet.v1.SignForSSHSessionResponse
38, // 58: teleport.lib.vnet.v1.ClientApplicationService.ExchangeSSHKeys:output_type -> teleport.lib.vnet.v1.ExchangeSSHKeysResponse
40, // 59: teleport.lib.vnet.v1.ClientApplicationService.PerformSessionMFACeremony:output_type -> teleport.lib.vnet.v1.PerformSessionMFACeremonyResponse
45, // 60: teleport.lib.vnet.v1.ClientApplicationService.ReissueDBCert:output_type -> teleport.lib.vnet.v1.ReissueDBCertResponse
47, // 61: teleport.lib.vnet.v1.ClientApplicationService.SignForDB:output_type -> teleport.lib.vnet.v1.SignForDBResponse
49, // 62: teleport.lib.vnet.v1.ClientApplicationService.OnNewDBConnection:output_type -> teleport.lib.vnet.v1.OnNewDBConnectionResponse
45, // [45:63] is the sub-list for method output_type
27, // [27:45] is the sub-list for method input_type
27, // [27:27] is the sub-list for extension type_name
27, // [27:27] is the sub-list for extension extendee
0, // [0:27] is the sub-list for field type_name
}
func init() { file_teleport_lib_vnet_v1_client_application_service_proto_init() }
@@ -2926,8 +3120,8 @@ func file_teleport_lib_vnet_v1_client_application_service_proto_init() {
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_teleport_lib_vnet_v1_client_application_service_proto_rawDesc), len(file_teleport_lib_vnet_v1_client_application_service_proto_rawDesc)),
NumEnums: 1,
NumMessages: 46,
NumEnums: 2,
NumMessages: 48,
NumExtensions: 0,
NumServices: 1,
},
@@ -35,23 +35,24 @@ import (
const _ = grpc.SupportPackageIsVersion9
const (
ClientApplicationService_AuthenticateProcess_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/AuthenticateProcess"
ClientApplicationService_ReportNetworkStackInfo_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/ReportNetworkStackInfo"
ClientApplicationService_Ping_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/Ping"
ClientApplicationService_ResolveFQDN_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/ResolveFQDN"
ClientApplicationService_ReissueAppCert_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/ReissueAppCert"
ClientApplicationService_SignForApp_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/SignForApp"
ClientApplicationService_OnNewAppConnection_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/OnNewAppConnection"
ClientApplicationService_OnInvalidLocalPort_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/OnInvalidLocalPort"
ClientApplicationService_GetTargetOSConfiguration_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/GetTargetOSConfiguration"
ClientApplicationService_UserTLSCert_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/UserTLSCert"
ClientApplicationService_SignForUserTLS_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/SignForUserTLS"
ClientApplicationService_SessionSSHConfig_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/SessionSSHConfig"
ClientApplicationService_SignForSSHSession_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/SignForSSHSession"
ClientApplicationService_ExchangeSSHKeys_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/ExchangeSSHKeys"
ClientApplicationService_ReissueDBCert_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/ReissueDBCert"
ClientApplicationService_SignForDB_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/SignForDB"
ClientApplicationService_OnNewDBConnection_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/OnNewDBConnection"
ClientApplicationService_AuthenticateProcess_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/AuthenticateProcess"
ClientApplicationService_ReportNetworkStackInfo_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/ReportNetworkStackInfo"
ClientApplicationService_Ping_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/Ping"
ClientApplicationService_ResolveFQDN_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/ResolveFQDN"
ClientApplicationService_ReissueAppCert_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/ReissueAppCert"
ClientApplicationService_SignForApp_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/SignForApp"
ClientApplicationService_OnNewAppConnection_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/OnNewAppConnection"
ClientApplicationService_OnInvalidLocalPort_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/OnInvalidLocalPort"
ClientApplicationService_GetTargetOSConfiguration_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/GetTargetOSConfiguration"
ClientApplicationService_UserTLSCert_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/UserTLSCert"
ClientApplicationService_SignForUserTLS_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/SignForUserTLS"
ClientApplicationService_SessionSSHConfig_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/SessionSSHConfig"
ClientApplicationService_SignForSSHSession_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/SignForSSHSession"
ClientApplicationService_ExchangeSSHKeys_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/ExchangeSSHKeys"
ClientApplicationService_PerformSessionMFACeremony_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/PerformSessionMFACeremony"
ClientApplicationService_ReissueDBCert_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/ReissueDBCert"
ClientApplicationService_SignForDB_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/SignForDB"
ClientApplicationService_OnNewDBConnection_FullMethodName = "/teleport.lib.vnet.v1.ClientApplicationService/OnNewDBConnection"
)
// ClientApplicationServiceClient is the client API for ClientApplicationService service.
@@ -101,6 +102,8 @@ type ClientApplicationServiceClient interface {
// ExchangeSSHKeys sends VNet's SSH host CA key to the client application and
// returns the user public key.
ExchangeSSHKeys(ctx context.Context, in *ExchangeSSHKeysRequest, opts ...grpc.CallOption) (*ExchangeSSHKeysResponse, error)
// PerformSessionMFACeremony performs a session-bound MFA ceremony for a session being established through VNet.
PerformSessionMFACeremony(ctx context.Context, in *PerformSessionMFACeremonyRequest, opts ...grpc.CallOption) (*PerformSessionMFACeremonyResponse, error)
// ReissueDBCert issues a new database cert.
ReissueDBCert(ctx context.Context, in *ReissueDBCertRequest, opts ...grpc.CallOption) (*ReissueDBCertResponse, error)
// SignForDB issues a signature with the private key associated with an x509
@@ -259,6 +262,16 @@ func (c *clientApplicationServiceClient) ExchangeSSHKeys(ctx context.Context, in
return out, nil
}
func (c *clientApplicationServiceClient) PerformSessionMFACeremony(ctx context.Context, in *PerformSessionMFACeremonyRequest, opts ...grpc.CallOption) (*PerformSessionMFACeremonyResponse, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(PerformSessionMFACeremonyResponse)
err := c.cc.Invoke(ctx, ClientApplicationService_PerformSessionMFACeremony_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *clientApplicationServiceClient) ReissueDBCert(ctx context.Context, in *ReissueDBCertRequest, opts ...grpc.CallOption) (*ReissueDBCertResponse, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(ReissueDBCertResponse)
@@ -336,6 +349,8 @@ type ClientApplicationServiceServer interface {
// ExchangeSSHKeys sends VNet's SSH host CA key to the client application and
// returns the user public key.
ExchangeSSHKeys(context.Context, *ExchangeSSHKeysRequest) (*ExchangeSSHKeysResponse, error)
// PerformSessionMFACeremony performs a session-bound MFA ceremony for a session being established through VNet.
PerformSessionMFACeremony(context.Context, *PerformSessionMFACeremonyRequest) (*PerformSessionMFACeremonyResponse, error)
// ReissueDBCert issues a new database cert.
ReissueDBCert(context.Context, *ReissueDBCertRequest) (*ReissueDBCertResponse, error)
// SignForDB issues a signature with the private key associated with an x509
@@ -396,6 +411,9 @@ func (UnimplementedClientApplicationServiceServer) SignForSSHSession(context.Con
func (UnimplementedClientApplicationServiceServer) ExchangeSSHKeys(context.Context, *ExchangeSSHKeysRequest) (*ExchangeSSHKeysResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ExchangeSSHKeys not implemented")
}
func (UnimplementedClientApplicationServiceServer) PerformSessionMFACeremony(context.Context, *PerformSessionMFACeremonyRequest) (*PerformSessionMFACeremonyResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method PerformSessionMFACeremony not implemented")
}
func (UnimplementedClientApplicationServiceServer) ReissueDBCert(context.Context, *ReissueDBCertRequest) (*ReissueDBCertResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ReissueDBCert not implemented")
}
@@ -679,6 +697,24 @@ func _ClientApplicationService_ExchangeSSHKeys_Handler(srv interface{}, ctx cont
return interceptor(ctx, in, info, handler)
}
func _ClientApplicationService_PerformSessionMFACeremony_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(PerformSessionMFACeremonyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ClientApplicationServiceServer).PerformSessionMFACeremony(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: ClientApplicationService_PerformSessionMFACeremony_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ClientApplicationServiceServer).PerformSessionMFACeremony(ctx, req.(*PerformSessionMFACeremonyRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ClientApplicationService_ReissueDBCert_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ReissueDBCertRequest)
if err := dec(in); err != nil {
@@ -796,6 +832,10 @@ var ClientApplicationService_ServiceDesc = grpc.ServiceDesc{
MethodName: "ExchangeSSHKeys",
Handler: _ClientApplicationService_ExchangeSSHKeys_Handler,
},
{
MethodName: "PerformSessionMFACeremony",
Handler: _ClientApplicationService_PerformSessionMFACeremony_Handler,
},
{
MethodName: "ReissueDBCert",
Handler: _ClientApplicationService_ReissueDBCert_Handler,
+11
View File
@@ -437,6 +437,17 @@ func (s *clientApplicationService) ExchangeSSHKeys(ctx context.Context, req *vne
}, nil
}
// PerformSessionMFACeremony is defined to satisfy [vnetv1.ClientApplicationServiceServer].
//
// TODO(cthach): Implement PerformSessionMFACeremony to allow the admin process to trigger an MFA ceremony in the user
// process and get the result.
func (s *clientApplicationService) PerformSessionMFACeremony(
_ context.Context,
_ *vnetv1.PerformSessionMFACeremonyRequest,
) (*vnetv1.PerformSessionMFACeremonyResponse, error) {
return nil, trace.NotImplemented("PerformSessionMFACeremony is not implemented")
}
// checkAppKey checks that at least the app profile and name are set, which are
// necessary to to disambiguate apps. LeafCluster is expected to be empty if the
// app is in a root cluster.
@@ -234,6 +234,17 @@ func (c *clientApplicationServiceClient) ExchangeSSHKeys(ctx context.Context, ho
return userPublicKey, nil
}
// PerformSessionMFACeremony is defined to satisfy [vnetv1.ClientApplicationServiceClient].
//
// TODO(cthach): Implement PerformSessionMFACeremony to allow the admin process to trigger an MFA ceremony in the user
// process and get the result.
func (c *clientApplicationServiceClient) PerformSessionMFACeremony(
_ context.Context,
_ *vnetv1.PerformSessionMFACeremonyRequest,
) (*vnetv1.PerformSessionMFACeremonyResponse, error) {
return nil, trace.NotImplemented("PerformSessionMFACeremony is not implemented")
}
// ReissueDBCert issues a new certificate for the requested database.
func (c *clientApplicationServiceClient) ReissueDBCert(ctx context.Context, dbInfo *vnetv1.DatabaseInfo) ([]byte, error) {
resp, err := c.clt.ReissueDBCert(ctx, &vnetv1.ReissueDBCertRequest{
+4
View File
@@ -303,4 +303,8 @@ func (*embeddedApplicationServiceClient) ExchangeSSHKeys(context.Context, *vnetv
}, nil
}
func (*embeddedApplicationServiceClient) PerformSessionMFACeremony(context.Context, *vnetv1.PerformSessionMFACeremonyRequest, ...grpc.CallOption) (*vnetv1.PerformSessionMFACeremonyResponse, error) {
return nil, trace.NotImplemented("MFA ceremonies not supported in embedded VNet")
}
var _ vnetv1.ClientApplicationServiceClient = (*embeddedApplicationServiceClient)(nil)
@@ -65,6 +65,8 @@ service ClientApplicationService {
// ExchangeSSHKeys sends VNet's SSH host CA key to the client application and
// returns the user public key.
rpc ExchangeSSHKeys(ExchangeSSHKeysRequest) returns (ExchangeSSHKeysResponse);
// PerformSessionMFACeremony performs a session-bound MFA ceremony for a session being established through VNet.
rpc PerformSessionMFACeremony(PerformSessionMFACeremonyRequest) returns (PerformSessionMFACeremonyResponse);
// ReissueDBCert issues a new database cert.
rpc ReissueDBCert(ReissueDBCertRequest) returns (ReissueDBCertResponse);
// SignForDB issues a signature with the private key associated with an x509
@@ -348,6 +350,20 @@ message SignForUserTLSResponse {
bytes signature = 1;
}
// SessionSSHConfigCredentialMode selects how the client application should build SSH config for a VNet SSH session.
//
// The VNet admin side decides whether it is making the first direct attempt or retrying after that attempt failed. The
// client application uses this mode to choose the corresponding credential path.
enum SessionSSHConfigCredentialMode {
SESSION_SSH_CONFIG_CREDENTIAL_MODE_UNSPECIFIED = 0;
// SESSION_SSH_CONFIG_CREDENTIAL_MODE_MFA_CERT retries after the direct attempt failed and falls back to issuing a
// legacy per-session MFA cert.
SESSION_SSH_CONFIG_CREDENTIAL_MODE_MFA_CERT = 1;
// SESSION_SSH_CONFIG_CREDENTIAL_MODE_DIRECT uses the user's existing SSH cert so in-band MFA can happen during the
// SSH handshake if needed.
SESSION_SSH_CONFIG_CREDENTIAL_MODE_DIRECT = 2;
}
// SessionSSHConfigRequest is a request for SessionSSHConfig.
message SessionSSHConfigRequest {
// Profile is the profile in which the SSH server is found.
@@ -361,6 +377,8 @@ message SessionSSHConfigRequest {
string address = 4;
// User is the SSH user the session is for.
string user = 5;
// Selects the credential path for this request.
SessionSSHConfigCredentialMode credential_mode = 6;
}
// SessionSSHConfigResponse is a response for SessionSSHConfig.
@@ -405,6 +423,22 @@ message ExchangeSSHKeysResponse {
bytes user_public_key = 1;
}
// PerformSessionMFACeremonyRequest is a request for PerformSessionMFACeremony.
message PerformSessionMFACeremonyRequest {
// Profile in which the target is found.
string profile = 1;
// Leaf cluster in which the target is found. If empty, the target is in the root cluster.
string leaf_cluster = 2;
// Identifies the SSH session that the MFA ceremony should be bound to.
bytes ssh_session_id = 3;
}
// PerformSessionMFACeremonyResponse is a response for PerformSessionMFACeremony.
message PerformSessionMFACeremonyResponse {
// The name of the completed MFA challenge.
string challenge_name = 1;
}
// MatchedDatabase holds info about a database that matched a query.
message MatchedDatabase {
// DatabaseInfo holds all necessary info for making connections to the resolved database.