ne_set_server_auth
3

# ne_set_server_auth

# ne_set_proxy_auth

# ne_forget_auth

register authentication callbacks

    	  #include <ne_auth.h>

    	    typedef int (*ne_auth_creds)
    	    void *userdata
    	    const char *realm
    	    int attempt
    	    char *username
    	    char *password

    	    void ne_set_server_auth
    	    ne_session *session
    	    ne_auth_creds callback
    	    void *userdata

    	    void ne_set_proxy_auth
    	    ne_session *session
    	    ne_auth_creds callback
    	    void *userdata

    	    void ne_forget_auth
    	    ne_session *session

## Description

The ne_auth_creds function type defines a callback which is invoked when a server or proxy server requires user authentication for a particular request. The `realm` string is supplied by the server. The `attempt` is a counter giving the number of times the request has been retried with different authentication credentials. The first time the callback is invoked for a particular request, `attempt` will be zero.

To retry the request using new authentication credentials, the callback should return zero, and the `username` and `password` buffers must contain &nul;-terminated strings. The `NE_ABUFSIZ` constant gives the size of these buffers.

If you only wish to allow the user one attempt to enter credentials, use the value of the `attempt` parameter as the return value of the callback.

To abort the request, the callback should return a non-zero value; in which case the contents of the `username` and `password` buffers are ignored.

The `ne_forget_auth` function can be used to discard the cached authentication credentials.

## Examples

    /* Function which prompts for a line of user input: */
    extern char *prompt_for(const char *prompt);

    static int
    my_auth(void *userdata, const char *realm, int attempts,
            char *username, char *password)
    {
       strncpy(username, prompt_for("Username: "), NE_ABUFSIZ);
       strncpy(password, prompt_for("Password: "), NE_ABUFSIZ);
       return attempts;
    }

    int main(...)
    {
       &egsess;

       ne_set_server_auth(sess, my_auth, NULL);

       /* ... */
    }