Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
README.txt
NetworkAuthentication |
Copyright (c) 2005 Apple Computer, Inc. |
All rights reserved. |
________________________________________________________________________________ |
About |
NetworkAuthentication |
NetworkAuthentication is a collection of sample code that demonstrates how to |
authenticate users using Directory Services. Example include three forms of |
authentication: CRAM-MD5, plaintext password, and GSSAPI. |
The routines were designed for applications running on Mac OS X 10.4. |
The project and files were built with XCode 2.0 |
Sample client / server authentication and user lookup applications are included |
in this Sample Code. |
lookupuser <username> |
demoserver <port> |
democlient <options> |
In order to test GSSAPI, demoserver must be run as root and the machine that |
is running it must have a keytab. |
________________________________________________________________________________ |
Files |
in the NetworkAuthentication Package |
The routines source files below are re-usable routines that can be used by |
applications to simplify handling various forms of authentications. |
DSUtility.h |
DSUtility.c |
GSSauthenticate.h |
GSSauthenticate.c |
Other source files provided are purely support files and code for the example. |
________________________________________________________________________________ |
How |
to use NetworkAuthentication |
You can cut and paste portions of it into your programs. You can use it as an |
example. Since NetworkAuthentication is sample code, many routines are there |
simply to show you how to use the Directory Service APIs. If a routine does more |
or less than what you want, you can have the source so you can modify it to do |
exactly you want it to do. Feel free to rip NetworkAuthentication off and modify |
its code in whatever ways you find work best for you. |
To use the built applications you simply launch the demoserver with a port, |
(e.g., "demoserver 2500"). Then from the same client or a different client |
launch the democlient against that server with some method (e.g., |
"democlient -m CRAM-MD5 -h 127.0.0.1 -t 2500 -u testuser -p apple"). The full |
usage output is below. |
If testing GSSAPI, you should not use loopback as it will not resolve the name |
of the host correctly, so I recommend using the real IP address of the host. |
Usage: democlient -m method -h ipaddress -t port [-u username] |
[-p password] [-S service] |
-m method 'cleartext', 'CRAM-MD5', 'GSSAPI' |
-h host IP address or dns name |
-t port for server |
-u username to authenticate (except GSSAPI) |
-p password to authenticate (except GSSAPI) |
-S service principal 'host' to use (GSSAPI) |
________________________________________________________________________________ |
Documentation |
The documentation for the routines can be found in the header files. There, you'll |
find function prototypes, and a description of each call that includes a |
complete listing of all input and output parameters. For example, here's the |
function prototype and documentation for one of the routines, DoPasswordAuth. |
/*! |
@function DoPasswordAuth |
@abstract Will take a record name and cleartext password to authenticate a user |
@discussion Authenticates a recordname with the supplied password. This does not mean the password |
will be sent in the clear, it just means the password is cleartext-based. |
@param inDSRef Existing tDirReference from dsOpenDirService |
@param inNodeRef The node found with LocateUserRecordNameAndNode for the user to be authenticated |
@param inAuthMethod The method being used (e.g., kDSStdAuthNodeNativeNoClearText) |
@param inRecordName The record name returned by LocateUserRecordNameAndNode for the specific user |
@param inPassword Is a cleartext password supplied by the user |
@result Will return eDSNoErr if successful, otherwise any error that may have occurred |
*/ |
tDirStatus DoPasswordAuth( tDirReference inDSRef, tDirNodeReference inNodeRef, const char *inAuthMethod, |
const char *inRecordName, const char *inPassword ); |
Copyright © 2005 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2005-06-01