return false
}
+func ParseIdentity(identity string) Identity {
+ const (
+ anonymousIdentityStr = "anonymous"
+ userPrefix = "user."
+ sslPrefix = "ssl://"
+ )
+
+ if identity == anonymousIdentityStr {
+ logger.V(3).Debugf("ParseIdentity(%q) -> Anonymous()", identity)
+ return Anonymous()
+ } else if strings.HasPrefix(identity, userPrefix) {
+ logger.V(3).Debugf("ParseIdentity(%q) -> NewUserIdentity(%q)", identity, strings.TrimPrefix(identity, userPrefix))
+ return NewUserIdentity(strings.TrimPrefix(identity, userPrefix))
+ } else if strings.HasPrefix(identity, sslPrefix) {
+ logger.V(3).Debugf("ParseIdentity(%q) -> NewSSLCertificate(%q)", identity, strings.TrimPrefix(identity, sslPrefix))
+ return NewSSLCertificate(strings.TrimPrefix(identity, sslPrefix))
+ }
+
+ logger.V(3).Debugf("ParseIdentity(%q) -> NewServiceIdentity(%q)", identity, identity)
+ return NewServiceIdentity(identity)
+}
+
func NewServiceIdentity(service string) Identity {
for _, driver := range identityDrivers {
logger.V(1).Infof("trying driver %s to load service identity %s", driver.name, service)
func NewUserIdentity(username string) Identity {
for _, driver := range identityDrivers {
- logger.V(1).Infof("trying driver %s to load service identity %s", driver.name, username)
+ logger.V(1).Infof("trying driver %s to load user identity %s", driver.name, username)
identity, err := driver.load(username)
if err == nil {
subst := &substantiatedIdentity{
panic("cannot get default identity before flags are parsed")
}
- if defaultMtlsIdentity == "anonymous" {
- return Anonymous()
- }
-
if defaultMtlsIdentity == "" {
userId, err := NewDefaultUserIdentity()
if err == nil && userId.IsValid() {
return NewServiceIdentity(defaultDefaultIdentity)
}
- return NewServiceIdentity(defaultMtlsIdentity)
+ return ParseIdentity(defaultMtlsIdentity)
}
// Anonymous returns an identity that supplies no client certificate