[ http://issues.apache.org/jira/browse/AXISCPP-971?page=comments#action_12437991 ] Michael Xiong commented on AXISCPP-971: ---------------------------------------
Dear all, Environment: Tomcat 2.0.58 should be --> Tomcat 5.0.28 Could someboday help me to update the "Environment:" info ? Thanks a lot ! Michael Xiong > axis-c engine: Support Basic Authentication of apache2, thus can get > username/password pair info directly > --------------------------------------------------------------------------------------------------------- > > Key: AXISCPP-971 > URL: http://issues.apache.org/jira/browse/AXISCPP-971 > Project: Axis-C++ > Issue Type: Improvement > Components: Server - Apache module, Server - Engine > Affects Versions: 1.6 Beta > Environment: Platform: > Linux fedora 3.0 > Axis version: > Server-side Axis C++ 1.6Beta > XML Parser Lib: > xersesc 2.6 > WSDL2ws tool by using axis java 1.3 > Client-side version Axis java 1.3 > Http Server Version: > Apache 2.0.53 > Tomcat 2.0.58 > Reporter: Michael Xiong > > I'm developing a web service server module by axis-c on fc3/apache2 > platform. > This server module need to be accessed through basic authentication of > apache2(as http standard), and it internally need to login again to the > lower-level legacy privileged system. > But I found that though axis-c engine can access username/password pair info > from apache2(which checked by mod_auth module first), my server module which > interacting with axis-c engine can not get username/password directly, > because axis-c engine discarded the username/password info during the > communication between apache2 and my server module. > Thus my server module can not get username/password pair from http basic > authentication, which will cause my server module very difficult to login to > the lower-level legacy privileged system. > I've investigated both 1.5final version and 1.6beta version, they all have > the same problem. > Because the axis-c engine acting as a bridge between apache2 and my server > module, so I think it's necessary to modify axis-c engine to resolve this > problem. > So I'd like to give some improvement to the axis-c engine code of 1.6beta > version, so that any server module can simply get the username/password pair > info from IMessageData interface. > The below is my modification for this improvement, please check.(I've > verified my code change on my platform, it works well) > Totally 4 source file need to be modified: > 1. include/axis/IMessageData.hpp > 2. src/common/MessageData.h > 3. src/engine/server/ServerAxisEngine.cpp > 4. src/server/apache2/Apache2Transport.cpp > For detail, pleae refer to below: > ------------------------------------------------------------------------------------------------------------ > IMessageData.hpp: add two public interface: > //<mxiong debug 2006/5/25 > public: > virtual void setPassword(string& m_sPassword) = 0; > virtual string& getPassword() = 0; > //>mxiong debug 2006/5/25 > ---------------------------------------------------------------------------------------------------- > MessageData.h; implement the added interface which used to access password > info: > //<mxiong debug 2006/5/25 > public: > void setPassword(string& sPassword) { m_sPassword = sPassword; } > string& getPassword() { return m_sPassword; } > protected: > string m_sPassword; > //>mxiong debug 2006/5/25 > ------------------------------------------------------------------------------------------------------ > ServerAxisEngine.cpp: in ServerAxisEngine::process (SOAPTransport * pStream), > add some code as the below: > do > { > /* populate MessageData with transport information */ > m_pMsgData->m_Protocol = pStream->getProtocol (); > //<mxiong debug 2006/5/25 > string username; > if (NULL!=pStream->getTransportProperty("username")) > { > username = (string)pStream->getTransportProperty("username"); > } > else > { > username = ""; > } > m_pMsgData->setUserName(username); > > string password; > if (NULL!=pStream->getTransportProperty("password")) > { > password = (string)pStream->getTransportProperty("password"); > } > else > { > password = ""; > } > m_pMsgData->setPassword(password); > //>mxiong debug 2006/5/25 > if (AXIS_SUCCESS != m_pDZ->setInputStream (pStream)) > -------------------------------------------------------------------------------------------------------------- > Apache2Transport.cpp: in const char* > Apache2Transport::getTransportProperty(const char* pcKey, bool response), add > the below code at the beginning: > //<mxiong debug 2006/5/25 > static const char* USER_NAME = "username"; > static const char* PASSWORD = "password"; > if (!strcmp(USER_NAME, pcKey)) { > return ((request_rec*)m_pContext)->user; > } else if (!strcmp(PASSWORD, pcKey)) { > const char* password = ""; > ap_get_basic_auth_pw((request_rec*)m_pContext, &password); > return password; > } > //>mxiong debug 2006/5/25 > ------------------------------------------------------------------------------------------------------------------- -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
