mirror of
https://git.openafs.org/openafs.git
synced 2025-01-31 13:38:01 +00:00
753a316821
if we're gonna clean up... Change-Id: I5ab03f29468577b62dacab41a67eadfd8c43f812 Reviewed-on: http://gerrit.openafs.org/2463 Reviewed-by: Derrick Brashear <shadow@dementia.org> Tested-by: Derrick Brashear <shadow@dementia.org>
76 lines
1.9 KiB
C
76 lines
1.9 KiB
C
/*
|
|
* Copyright 2000, International Business Machines Corporation and others.
|
|
* All Rights Reserved.
|
|
*
|
|
* This software has been released under the terms of the IBM Public
|
|
* License. For details, see the LICENSE file in the top-level source
|
|
* directory or online at http://www.openafs.org/dl/license10.html
|
|
*/
|
|
|
|
#include <afsconfig.h>
|
|
#include <afs/param.h>
|
|
|
|
|
|
#if defined(AFS_SGI_ENV)
|
|
|
|
#include <limits.h>
|
|
#include <unistd.h>
|
|
#include <errno.h>
|
|
#include <sys/types.h>
|
|
#include <sys/param.h>
|
|
#include <afs/kauth.h>
|
|
#include <afs/kautils.h>
|
|
|
|
extern char *ktc_tkt_string();
|
|
|
|
/*
|
|
* authenticate with AFS
|
|
* returns:
|
|
* 1 if read password but couldn't authenticate correctly via AFS
|
|
* 0 if authenticated via AFS correctly
|
|
*/
|
|
int
|
|
afs_verify(char *uname, /* user name trying to log in */
|
|
char *pword, /* password */
|
|
afs_int32 * exp, /* expiration time */
|
|
int quite)
|
|
{ /* no printing */
|
|
auto char *reason;
|
|
|
|
ka_Init(0);
|
|
/*
|
|
* The basic model for logging in now, is that *if* there
|
|
* is a kerberos record for this individual user we will
|
|
* trust kerberos (provided the user really has an account
|
|
* locally.) If there is no kerberos record (or the password
|
|
* were typed incorrectly.) we would attempt to authenticate
|
|
* against the local password file entry. Naturally, if
|
|
* both fail we use existing failure code.
|
|
*/
|
|
if (ka_UserAuthenticateGeneral(KA_USERAUTH_VERSION + KA_USERAUTH_DOSETPAG, uname, /* kerberos name */
|
|
NULL, /* instance */
|
|
NULL, /* realm */
|
|
pword, /* password */
|
|
0, /* default lifetime */
|
|
exp, /* spare 1/expiration */
|
|
0, /* spare 2 */
|
|
&reason /* error string */
|
|
)) {
|
|
if (!quite) {
|
|
printf("Unable to authenticate to AFS because %s\n", reason);
|
|
printf("proceeding with local authentication...\n");
|
|
}
|
|
return 1;
|
|
}
|
|
/* authenticated successfully */
|
|
return 0;
|
|
}
|
|
|
|
char *
|
|
afs_gettktstring(void)
|
|
{
|
|
return ktc_tkt_string();
|
|
}
|
|
|
|
#endif
|