# $Id$

# language

# package org.apache.catalina.realm

jaasRealm.beginLogin=JAASRealm login requested for username "{0}" using LoginContext for application "{1}"
jaasRealm.accountExpired=Username "{0}" NOT authenticated due to expired account
jaasRealm.authenticateFailure=Username "{0}" NOT successfully authenticated
jaasRealm.authenticateSuccess=Username "{0}" successfully authenticated as Principal "{1}" -- Subject was created too
jaasRealm.credentialExpired=Username "{0}" NOT authenticated due to expired credential
jaasRealm.failedLogin=Username "{0}" NOT authenticated due to failed login
jaasRealm.loginException=Login exception authenticating username "{0}"
jaasRealm.unexpectedError=Unexpected error
jaasRealm.loginContextCreated=JAAS LoginContext created for username "{0}"
jaasRealm.userPrincipalSuccess=Subject for username "{0}" returned user Principal "{1}"
jaasRealm.userPrincipalFailure=Subject for username "{0}" did not return a valid user Principal
jaasRealm.cachePrincipal=User Principal "{0}" cached; has {1} role Principal(s)
jaasRealm.checkPrincipal=Checking Principal "{0}" [{1}]
jaasRealm.userPrincipalSuccess=Principal "{0}" is a valid user class. We will use this as the user Principal.
jaasRealm.userPrincipalFailure=No valid user Principal found
jaasRealm.rolePrincipalAdd=Adding role Principal "{0}" to this user Principal''s roles
jaasRealm.rolePrincipalSuccess={0} role Principal(s) found
jaasRealm.rolePrincipalFailure=No valid role Principals found.
jaasRealm.isInRole.start=Checking if user Principal "{0}" possesses role "{1}"
jaasRealm.isInRole.noPrincipalOrRole=No roles Principals found. User Principal or Subject is null, or user Principal not in cache
jaasRealm.isInRole.principalCached=User Principal has {0} role Principal(s)
jaasRealm.isInRole.possessesRole=User Principal has a role Principal called "{0}"
jaasRealm.isInRole.match=Matching role Principal found.
jaasRealm.isInRole.noMatch=Matching role Principal NOT found.
jaasCallback.digestpassword=Digested password "{0}" as "{1}"
jaasCallback.username=Returned username "{0}"
jaasCallback.password=Returned password "{0}"
jdbcRealm.authenticateFailure=Username {0} NOT successfully authenticated
jdbcRealm.authenticateSuccess=Username {0} successfully authenticated
jdbcRealm.close=Exception closing database connection
jdbcRealm.exception=Exception performing authentication
jdbcRealm.getPassword.exception=Exception retrieving password for "{0}"
jdbcRealm.getRoles.exception=Exception retrieving roles for "{0}"
jdbcRealm.open=Exception opening database connection
jndiRealm.authenticateFailure=Username {0} NOT successfully authenticated
jndiRealm.authenticateSuccess=Username {0} successfully authenticated
jndiRealm.close=Exception closing directory server connection
jndiRealm.exception=Exception performing authentication
jndiRealm.open=Exception opening directory server connection
memoryRealm.authenticateFailure=Username {0} NOT successfully authenticated
memoryRealm.authenticateSuccess=Username {0} successfully authenticated
memoryRealm.loadExist=Memory database file {0} cannot be read
memoryRealm.loadPath=Loading users from memory database file {0}
memoryRealm.readXml=Exception while reading memory database file
realmBase.algorithm=Invalid message digest algorithm {0} specified
realmBase.alreadyStarted=This Realm has already been started
realmBase.digest=Error digesting user credentials
realmBase.forbidden=Access to the requested resource has been denied
realmBase.hasRoleFailure=Username {0} does NOT have role {1}
realmBase.hasRoleSuccess=Username {0} has role {1}
realmBase.notAuthenticated=Configuration error:  Cannot perform access control without an authenticated principal
realmBase.notStarted=This Realm has not yet been started
realmBase.authenticateFailure=Username {0} NOT successfully authenticated
realmBase.authenticateSuccess=Username {0} successfully authenticated
userDatabaseRealm.authenticateError=Login configuration error authenticating username {0}
userDatabaseRealm.lookup=Exception looking up UserDatabase under key {0}
userDatabaseRealm.noDatabase=No UserDatabase component found under key {0}
userDatabaseRealm.noEngine=No Engine component found in container hierarchy
userDatabaseRealm.noGlobal=No global JNDI resources context found
dataSourceRealm.authenticateFailure=Username {0} NOT successfully authenticated
dataSourceRealm.authenticateSuccess=Username {0} successfully authenticated
dataSourceRealm.close=Exception closing database connection
dataSourceRealm.exception=Exception performing authentication
dataSourceRealm.getPassword.exception=Exception retrieving password for "{0}"
dataSourceRealm.getRoles.exception=Exception retrieving roles for "{0}"
dataSourceRealm.open=Exception opening database connection
