Involved Source Files
Package credentials implements various credentials supported by gRPC library,
which encapsulate all the state needed by a client to authenticate with a
server and make various assertions, e.g., about the client's identity, role,
or whether it is authorized to make a particular call.
go12.gotls.go
Package-Level Type Names (total 17, in which 14 are exported)
Bundle is a combination of TransportCredentials and PerRPCCredentials.
It also contains a mode switching method, so it can be used as a combination
of different credential policies.
Bundle cannot be used together with individual TransportCredentials.
PerRPCCredentials from Bundle will be appended to other PerRPCCredentials.
This API is experimental.
NewWithMode should make a copy of Bundle, and switch mode. Modifying the
existing Bundle may cause races.
NewWithMode returns nil if the requested mode is not supported.
( T) PerRPCCredentials() PerRPCCredentials( T) TransportCredentials() TransportCredentials
*google.golang.org/grpc/credentials/google.creds
func Bundle.NewWithMode(mode string) (Bundle, error)
func google.golang.org/grpc/credentials/google.NewComputeEngineCredentials() Bundle
func google.golang.org/grpc/credentials/google.NewDefaultCredentials() Bundle
func google.golang.org/grpc.WithCredentialsBundle(b Bundle) grpc.DialOption
ChannelzSecurityInfo defines the interface that security protocols should implement
in order to provide security info to channelz.
This API is experimental.
( T) GetSecurityValue() ChannelzSecurityValueTLSInfo
ClientHandshakeInfo holds data to be passed to ClientHandshake. This makes
it possible to pass arbitrary data to the handshaker from gRPC, resolver,
balancer etc. Individual credential implementations control the actual
format of the data that they are willing to receive.
This API is experimental.
Attributes contains the attributes for the address. It could be provided
by the gRPC, resolver, balancer etc.
func ClientHandshakeInfoFromContext(ctx context.Context) ClientHandshakeInfo
CommonAuthInfo contains authenticated information common to AuthInfo implementations.
It should be embedded in a struct implementing AuthInfo to provide additional information
about the credentials.
This API is experimental.
SecurityLevelSecurityLevel
GetCommonAuthInfo returns the pointer to CommonAuthInfo struct.
func (*CommonAuthInfo).GetCommonAuthInfo() *CommonAuthInfo
PerRPCCredentials defines the common interface for the credentials which need to
attach security information to every RPC (e.g., oauth2).
GetRequestMetadata gets the current request metadata, refreshing
tokens if required. This should be called by the transport layer on
each request, and the data should be populated in headers or other
context. If a status code is returned, it will be used as the status
for the RPC. uri is the URI of the entry point for the request.
When supported by the underlying implementation, ctx can be used for
timeout and cancellation. Additionally, RequestInfo data will be
available via ctx to this call.
TODO(zhaoq): Define the set of the qualified keys instead of leaving
it as an arbitrary string.
RequireTransportSecurity indicates whether the credentials requires
transport security.
google.golang.org/grpc/credentials/oauth.TokenSource
google.golang.org/grpc/credentials/oauth.jwtAccess
google.golang.org/grpc/credentials/oauth.oauthAccess
*google.golang.org/grpc/credentials/oauth.serviceAccount
google.golang.org/api/transport/grpc.grpcTokenSource
func Bundle.PerRPCCredentials() PerRPCCredentials
func google.golang.org/grpc/credentials/oauth.NewApplicationDefault(ctx context.Context, scope ...string) (PerRPCCredentials, error)
func google.golang.org/grpc/credentials/oauth.NewComputeEngine() PerRPCCredentials
func google.golang.org/grpc/credentials/oauth.NewJWTAccessFromFile(keyFile string) (PerRPCCredentials, error)
func google.golang.org/grpc/credentials/oauth.NewJWTAccessFromKey(jsonKey []byte) (PerRPCCredentials, error)
func google.golang.org/grpc/credentials/oauth.NewOauthAccess(token *oauth2.Token) PerRPCCredentials
func google.golang.org/grpc/credentials/oauth.NewServiceAccountFromFile(keyFile string, scope ...string) (PerRPCCredentials, error)
func google.golang.org/grpc/credentials/oauth.NewServiceAccountFromKey(jsonKey []byte, scope ...string) (PerRPCCredentials, error)
func google.golang.org/grpc.PerRPCCredentials(creds PerRPCCredentials) grpc.CallOption
func google.golang.org/grpc.WithPerRPCCredentials(creds PerRPCCredentials) grpc.DialOption
ProtocolInfo provides information regarding the gRPC wire protocol version,
security protocol, security protocol version in use, server name, etc.
ProtocolVersion is the gRPC wire protocol version.
SecurityProtocol is the security protocol in use.
SecurityVersion is the security protocol version. It is a static version string from the
credentials, not a value that reflects per-connection protocol negotiation. To retrieve
details about the credentials used for a connection, use the Peer's AuthInfo field instead.
Deprecated: please use Peer.AuthInfo.
ServerName is the user-configured server name.
func TransportCredentials.Info() ProtocolInfo
RequestInfo contains request data attached to the context passed to GetRequestMetadata calls.
This API is experimental.
AuthInfo contains the information from a security handshake (TransportCredentials.ClientHandshake, TransportCredentials.ServerHandshake)
The method passed to Invoke or NewStream for this RPC. (For proto methods, this has the format "/some.Service/Method")
func RequestInfoFromContext(ctx context.Context) (ri RequestInfo, ok bool)
TransportCredentials defines the common interface for all the live gRPC wire
protocols and supported transport security protocols (e.g., TLS, SSL).
ClientHandshake does the authentication handshake specified by the
corresponding authentication protocol on rawConn for clients. It returns
the authenticated connection and the corresponding auth information
about the connection. The auth information should embed CommonAuthInfo
to return additional information about the credentials. Implementations
must use the provided context to implement timely cancellation. gRPC
will try to reconnect if the error returned is a temporary error
(io.EOF, context.DeadlineExceeded or err.Temporary() == true). If the
returned error is a wrapper error, implementations should make sure that
the error implements Temporary() to have the correct retry behaviors.
Additionally, ClientHandshakeInfo data will be available via the context
passed to this call.
If the returned net.Conn is closed, it MUST close the net.Conn provided.
Clone makes a copy of this TransportCredentials.
Info provides the ProtocolInfo of this TransportCredentials.
OverrideServerName overrides the server name used to verify the hostname on the returned certificates from the server.
gRPC internals also use it to override the virtual hosting name if it is set.
It must be called before dialing. Currently, this is only used by grpclb.
ServerHandshake does the authentication handshake for servers. It returns
the authenticated connection and the corresponding auth information about
the connection. The auth information should embed CommonAuthInfo to return additional information
about the credentials.
If the returned net.Conn is closed, it MUST close the net.Conn provided.
*tlsCreds
*google.golang.org/grpc/credentials/alts.altsTC
func NewClientTLSFromCert(cp *x509.CertPool, serverNameOverride string) TransportCredentials
func NewClientTLSFromFile(certFile, serverNameOverride string) (TransportCredentials, error)
func NewServerTLSFromCert(cert *tls.Certificate) TransportCredentials
func NewServerTLSFromFile(certFile, keyFile string) (TransportCredentials, error)
func NewTLS(c *tls.Config) TransportCredentials
func Bundle.TransportCredentials() TransportCredentials
func TransportCredentials.Clone() TransportCredentials
func google.golang.org/grpc/credentials/alts.NewClientCreds(opts *alts.ClientOptions) TransportCredentials
func google.golang.org/grpc/credentials/alts.NewServerCreds(opts *alts.ServerOptions) TransportCredentials
func google.golang.org/grpc/credentials/alts.newALTS(side core.Side, accounts []string, hsAddress string) TransportCredentials
func google.golang.org/grpc.Creds(c TransportCredentials) grpc.ServerOption
func google.golang.org/grpc.WithTransportCredentials(creds TransportCredentials) grpc.DialOption
clientHandshakeInfoKey is a struct used as the key to store
ClientHandshakeInfo in a context.
requestInfoKey is a struct to be used as the key when attaching a RequestInfo to a context object.
Package-Level Functions (total 10, in which 8 are exported)
CheckSecurityLevel checks if a connection's security level is greater than or equal to the specified one.
It returns success if 1) the condition is satisified or 2) AuthInfo struct does not implement GetCommonAuthInfo() method
or 3) CommonAuthInfo.SecurityLevel has an invalid zero value. For 2) and 3), it is for the purpose of backward-compatibility.
This API is experimental.
ClientHandshakeInfoFromContext returns the ClientHandshakeInfo struct stored
in ctx.
This API is experimental.
NewClientTLSFromCert constructs TLS credentials from the provided root
certificate authority certificate(s) to validate server connections. If
certificates to establish the identity of the client need to be included in
the credentials (eg: for mTLS), use NewTLS instead, where a complete
tls.Config can be specified.
serverNameOverride is for testing only. If set to a non empty string,
it will override the virtual host name of authority (e.g. :authority header
field) in requests.
NewClientTLSFromFile constructs TLS credentials from the provided root
certificate authority certificate file(s) to validate server connections. If
certificates to establish the identity of the client need to be included in
the credentials (eg: for mTLS), use NewTLS instead, where a complete
tls.Config can be specified.
serverNameOverride is for testing only. If set to a non empty string,
it will override the virtual host name of authority (e.g. :authority header
field) in requests.
NewServerTLSFromCert constructs TLS credentials from the input certificate for server.
NewServerTLSFromFile constructs TLS credentials from the input certificate file and key
file for server.
NewTLS uses c to construct a TransportCredentials based on TLS.
RequestInfoFromContext extracts the RequestInfo from the context if it exists.
This API is experimental.
This init function adds cipher suite constants only defined in Go 1.12.
Package-Level Constants (total 4, all are exported)
IntegrityOnly indicates a connection only provides integrity protection.
Invalid indicates an invalid security level.
The zero SecurityLevel value is invalid for backward compatibility.
NoSecurity indicates a connection is insecure.
PrivacyAndIntegrity indicates a connection provides both privacy and integrity protection.
The pages are generated with Goldsv0.3.2-preview. (GOOS=darwin GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu.
PR and bug reports are welcome and can be submitted to the issue list.
Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds.