summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorGravatar damitha2011-05-31 09:16:01 +0000
committerGravatar damitha2011-05-31 09:16:01 +0000
commit0893c0b34450ccfa46463a71ad0fc588ef16abd7 (patch)
tree691cc2e3145557c028d94a4fb72cc5fcfb458b62 /include
parentbcaf5833f0b73566937ad9629d01c943b553abe7 (diff)
downloadaxis2c-0893c0b34450ccfa46463a71ad0fc588ef16abd7.tar.gz
axis2c-0893c0b34450ccfa46463a71ad0fc588ef16abd7.tar.bz2
Initial checkin of ntlm auth code
git-svn-id: http://svn.apache.org/repos/asf/axis/axis2/c/core/trunk@1129586 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'include')
-rw-r--r--include/axis2_http_header.h11
-rw-r--r--include/axis2_http_transport.h25
-rw-r--r--include/axis2_ntlm.h235
-rw-r--r--include/axis2_options.h47
4 files changed, 318 insertions, 0 deletions
diff --git a/include/axis2_http_header.h b/include/axis2_http_header.h
index c79ab50..5e3dab0 100644
--- a/include/axis2_http_header.h
+++ b/include/axis2_http_header.h
@@ -69,6 +69,17 @@ extern "C"
axis2_http_header_get_value(
const axis2_http_header_t * header,
const axutil_env_t * env);
+
+ /**
+ * @param header pointer to header
+ * @param env pointer to environment struct
+ * @param value header value
+ */
+ AXIS2_EXTERN void AXIS2_CALL
+ axis2_http_header_set_value(
+ axis2_http_header_t * header,
+ const axutil_env_t * env,
+ const axis2_char_t *value);
/**
* @param header pointer to header
diff --git a/include/axis2_http_transport.h b/include/axis2_http_transport.h
index 25f6e97..7bf5c53 100644
--- a/include/axis2_http_transport.h
+++ b/include/axis2_http_transport.h
@@ -964,6 +964,21 @@ extern "C"
* Proxy authentication password property name
*/
#define AXIS2_PROXY_AUTH_PASSWD "PROXY_AUTH_PASSWD"
+
+ /**
+ * NTLM authentication domain property name
+ */
+ #define AXIS2_NTLM_AUTH_DOMAIN "NTLM_AUTH_DOMAIN"
+
+ /**
+ * NTLM authentication workstation property name
+ */
+ #define AXIS2_NTLM_AUTH_WORKSTATION "NTLM_AUTH_WORKSTATION"
+
+ /**
+ * NTLM authentication flags property name
+ */
+ #define AXIS2_NTLM_AUTH_FLAGS "NTLM_AUTH_FLAGS"
/* #define AXIS2_HTTP_AUTH_TYPE "HTTP_AUTH_TYPE"*/
@@ -977,6 +992,11 @@ extern "C"
* HTTP "Digest" authentication
*/
#define AXIS2_HTTP_AUTH_TYPE_DIGEST "Digest"
+
+ /**
+ * "NTLM" authentication
+ */
+ #define AXIS2_HTTP_AUTH_TYPE_NTLM "NTLM"
/**
* Proxy "Basic" authentication
@@ -987,6 +1007,11 @@ extern "C"
* Proxy "Digest" authentication
*/
#define AXIS2_PROXY_AUTH_TYPE_DIGEST "Digest"
+
+ /**
+ * Proxy "NTLM" authentication
+ */
+ #define AXIS2_PROXY_AUTH_TYPE_NTLM "NTLM"
/**
diff --git a/include/axis2_ntlm.h b/include/axis2_ntlm.h
new file mode 100644
index 0000000..0e78bc5
--- /dev/null
+++ b/include/axis2_ntlm.h
@@ -0,0 +1,235 @@
+
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef AXIS2_NTLM_H
+#define AXIS2_NTLM_H
+
+/**
+ *@file axis2_ntlm.h
+ *@brief this is the ntlm authentication abstraction layer for axis2
+ */
+
+#include <axutil_env.h>
+#include <axutil_utils.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ typedef struct axis2_ntlm_ops axis2_ntlm_ops_t;
+ typedef struct axis2_ntlm axis2_ntlm_t;
+
+ /**
+ * @defgroup axis2_ntlm ntlm
+ * @ingroup axiom
+ * @{
+ * @}
+ */
+
+ /**
+ * @defgroup axis2_ntlm ntlm
+ * @ingroup axis2_ntlm
+ * @{
+ */
+
+ /**
+ * \brief AXIS2_NTLM ops
+ * Encapsulator struct for ops of axiis2_ntlm
+ */
+
+ struct axis2_ntlm_ops
+ {
+ /**
+ * free pull_ntlm
+ * @param ntlm axis2_ntlm struct
+ * @param env axutil_environment MUST NOT be NULL
+ * @returns axis2_status_code
+ */
+
+ void (
+ AXIS2_CALL
+ * free)(
+ axis2_ntlm_t * ntlm,
+ const axutil_env_t * env);
+
+ /**
+ * Create Type1 NTLM message. This will create a type1 message and assign
+ * it to the return type.
+ * @param ntlm axis2_ntlm
+ * @param env axutil_environment, MUST NOT be NULL.
+ * @param encoded_message return type passed by caller.
+ * @param encoded_len length of the encoded message
+ * @param uname user name
+ * @param passwd password
+ * @param flags NTLM flags
+ * @param domain domain
+ * @param workstation
+ * @returns status , AXIS2_FAILURE on error
+ */
+
+ axis2_status_t (
+ AXIS2_CALL
+ * create_type1_message)(
+ axis2_ntlm_t * ntlm,
+ const axutil_env_t * env,
+ axis2_char_t **encoded_message,
+ int *encoded_len,
+ const axis2_char_t *uname,
+ const axis2_char_t *passwd,
+ const int flags,
+ const axis2_char_t *domain);
+
+ /**
+ * Create Type3 NTLM message. This will create a type3 message and assign
+ * it to the return type.
+ * @param ntlm axis2_ntlm
+ * @param env axutil_environment, MUST NOT be NULL.
+ * @param header_value Header value extracted from the type2 message
+ * @param encoded_message return type passed by caller.
+ * @param encoded_len length of the encoded message
+ * @param uname user name
+ * @param passwd password
+ * @param flags NTLM flags
+ * @param domain domain
+ * @param workstation
+ * @returns status , AXIS2_FAILURE on error
+ */
+
+ axis2_status_t(
+ AXIS2_CALL
+ * create_type3_message)(
+ axis2_ntlm_t * ntlm,
+ const axutil_env_t * env,
+ axis2_char_t *header_value,
+ axis2_char_t **encoded_message,
+ int *encoded_len,
+ const axis2_char_t *uname,
+ const axis2_char_t *passwd,
+ const axis2_char_t *domain,
+ const axis2_char_t *workstation);
+
+
+ };
+
+ /**
+ * @brief axis2_ntlm struct
+ * Axis2 NTLM
+ */
+ struct axis2_ntlm
+ {
+ const axis2_ntlm_ops_t *ops;
+ };
+
+ /**
+ * Creates an instance of axis2_ntlm that would be used to
+ * authorize NTLM
+ * @param env environment struct, must not be null
+ * @returns a pointer to axis2_ntlm_t struct
+ * NULL on error with error code set in the environment's error
+ */
+ AXIS2_EXTERN axis2_ntlm_t *AXIS2_CALL
+ axis2_ntlm_create(
+ const axutil_env_t * env);
+
+
+ /**
+ * free method for ntlm
+ * @param ntlm pointer to the NTLM struct
+ * @param env environment struct, must not be null
+ *
+ * @return
+ */
+ AXIS2_EXTERN void AXIS2_CALL
+ axis2_ntlm_free(
+ axis2_ntlm_t * ntlm,
+ const axutil_env_t * env);
+
+ /**
+ * Create Type1 NTLM message. This will create a type1 message and assign
+ * it to the return type.
+ * @param ntlm axis2_ntlm
+ * @param env axutil_environment, MUST NOT be NULL.
+ * @param encoded_message return type passed by caller.
+ * @param encoded_len length of the encoded message
+ * @param uname user name
+ * @param passwd password
+ * @param flags NTLM flags
+ * @param domain domain
+ * @param workstation
+ * @returns status , AXIS2_FAILURE on error
+ */
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ axis2_ntlm_auth_create_type1_message(
+ axis2_ntlm_t * ntlm,
+ const axutil_env_t * env,
+ axis2_char_t **encoded_message,
+ int *encoded_len,
+ const axis2_char_t *uname,
+ const axis2_char_t *passwd,
+ const int flags,
+ const axis2_char_t *domain);
+
+ /**
+ * Create Type3 NTLM message. This will create a type3 message and assign
+ * it to the return type.
+ * @param ntlm axis2_ntlm
+ * @param env axutil_environment, MUST NOT be NULL.
+ * @param header_value Header value extracted from the type2 message
+ * @param encoded_message return type passed by caller.
+ * @param encoded_len length of the encoded message
+ * @param uname user name
+ * @param passwd password
+ * @param flags NTLM flags
+ * @param domain domain
+ * @param workstation
+ * @returns status , AXIS2_FAILURE on error
+ */
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ axis2_ntlm_auth_create_type3_message(
+ axis2_ntlm_t * ntlm,
+ const axutil_env_t * env,
+ axis2_char_t *header_value,
+ axis2_char_t **encoded_message,
+ int *encoded_len,
+ const axis2_char_t *uname,
+ const axis2_char_t *passwd,
+ const axis2_char_t *domain,
+ const axis2_char_t *workstation);
+
+ /** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* AXIS2_NTLM_H */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/include/axis2_options.h b/include/axis2_options.h
index 4ed2185..3c320a0 100644
--- a/include/axis2_options.h
+++ b/include/axis2_options.h
@@ -840,6 +840,53 @@ extern "C"
const axis2_char_t * password,
const axis2_char_t * auth_type);
+ /**
+ * Sets ntlm http authentication information.
+ * @param env pointer to environment struct
+ * @param parent pointer to parent struct
+ * @param username string representing username
+ * @param password string representing password
+ * @param flags int pointer representing flags
+ * @param domain string representing domain
+ * @param workstation string representing workstation
+ * @param auth_type use "NTLM" to force ntlm http authentication
+ * or NULL for not forcing authentication
+ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
+ */
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ axis2_options_set_ntlm_http_auth_info(
+ axis2_options_t * options,
+ const axutil_env_t * env,
+ const axis2_char_t * username,
+ const axis2_char_t * password,
+ const int * flags,
+ const axis2_char_t * domain,
+ const axis2_char_t * workstation,
+ const axis2_char_t * auth_type);
+
+ /**
+ * Sets ntlm proxy authentication information.
+ * @param env pointer to environment struct
+ * @param parent pointer to parent struct
+ * @param username string representing username
+ * @param password string representing password
+ * @param flags int pointer representing flags
+ * @param domain string representing domain
+ * @param workstation string representing workstation
+ * @param auth_type use "NTLM" to force ntlm proxy authentication
+ * or NULL for not forcing authentication
+ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
+ */
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ axis2_options_set_ntlm_proxy_auth_info(
+ axis2_options_t * options,
+ const axutil_env_t * env,
+ const axis2_char_t * username,
+ const axis2_char_t * password,
+ const int * flags,
+ const axis2_char_t * domain,
+ const axis2_char_t * workstation,
+ const axis2_char_t * auth_type);
/** @} */
#ifdef __cplusplus
}