Mercurial > pidgin
changeset 19837:cb7433549a6f
[gaim-migrate @ 17192]
trial of new Login.live.com passport login procedure
Not stable.
committed by MaYuan<mayuan2006@gmail.com>
committer: Ethan Blanton <elb@pidgin.im>
author | Ma Yuan <mayuan2006@gmail.com> |
---|---|
date | Fri, 08 Sep 2006 16:02:00 +0000 |
parents | b821d5551c30 |
children | 579edff7c172 |
files | src/protocols/msn/nexus.c src/protocols/msn/nexus.h |
diffstat | 2 files changed, 99 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/protocols/msn/nexus.c Thu Sep 07 17:32:25 2006 +0000 +++ b/src/protocols/msn/nexus.c Fri Sep 08 16:02:00 2006 +0000 @@ -26,6 +26,8 @@ #include "nexus.h" #include "notification.h" +#define NEXUS_LOGIN_TWN 1 + /*Local Function Prototype*/ static void nexus_login_connect_cb(gpointer data, GaimSslConnection *gsc,GaimInputCondition cond); @@ -95,15 +97,21 @@ session = nexus->session; g_return_if_fail(session != NULL); -// gaim_debug_misc("msn", "TWN Server Reply: {%s}\n", soapconn->read_buf); + gaim_debug_misc("msn", "TWN Server Reply: {%s}\n", soapconn->read_buf); /*reply OK, we should process the SOAP body*/ gaim_debug_info("MaYuan","Windows Live ID Reply OK!\n"); //TODO: we should parse it using XML +#ifdef NEXUS_LOGIN_TWN base = g_strstr_len(soapconn->read_buf, soapconn->read_len, TWN_START_TOKEN); base += strlen(TWN_START_TOKEN); c = g_strstr_len(soapconn->read_buf, soapconn->read_len, TWN_END_TOKEN); +#else + base = g_strstr_len(soapconn->read_buf, soapconn->read_len, TWN_LIVE_START_TOKEN); + base += strlen(TWN_LIVE_START_TOKEN); + c = g_strstr_len(soapconn->read_buf, soapconn->read_len, TWN_LIVE_END_TOKEN); +#endif login_params = g_strndup(base, c - base); // gaim_debug_info("msn", "TWN Cert: {%s}\n", login_params); @@ -166,7 +174,12 @@ char *ru,*lc,*id,*tw,*ct,*kpp,*kv,*ver,*rn,*tpf; char *fs0,*fs; char *username, *password; - char *request_str, *head, *tail,*challenge_str; + char *request_str, *head, *tail; +#ifdef NEXUS_LOGIN_TWN + char *challenge_str; +#else + char *rst1_str,*rst2_str,*rst3_str; +#endif gaim_debug_info("MaYuan","starting Windows Live ID authentication\n"); @@ -222,14 +235,32 @@ }else{ fs = g_strdup("1"); } + +#ifdef NEXUS_LOGIN_TWN challenge_str = g_strdup_printf( "lc=%s&id=%s&tw=%s&fs=%s&ru=%s&ct=%s&kpp=%s&kv=%s&ver=%s&rn=%s&tpf=%s\r\n", lc,id,tw,fs,ru,ct,kpp,kv,ver,rn,tpf ); - g_free(fs); /*build the SOAP windows Live ID XML body */ tail = g_strdup_printf(TWN_ENVELOP_TEMPLATE,username,password,challenge_str ); + g_free(challenge_str); +#else + rst1_str = g_strdup_printf( + "id=%s&tw=%s&fs=%s&kpp=%s&kv=%s&ver=%s&rn=%s", + id,tw,fs,kpp,kv,ver,rn + ); + rst2_str = g_strdup_printf( + "fs=%s&id=%s&kv=%s&rn=%s&tw=%s&ver=%s", + fs,id,kv,rn,tw,ver + ); + rst3_str = g_strdup_printf("id=%s",id); + tail = g_strdup_printf(TWN_LIVE_ENVELOP_TEMPLATE,username,password,rst1_str,rst2_str,rst3_str); + g_free(rst1_str); + g_free(rst2_str); + g_free(rst3_str); +#endif + g_free(fs); soapconn->login_path = g_strdup(TWN_POST_URL); head = g_strdup_printf( @@ -243,7 +274,7 @@ soapconn->login_path,soapconn->login_host,(int)strlen(tail)); request_str = g_strdup_printf("%s%s", head,tail); -// gaim_debug_misc("msn", "TWN Sending: {%s}\n", request_str); + gaim_debug_misc("msn", "TWN Sending: {%s}\n", request_str); g_free(head); g_free(tail);
--- a/src/protocols/msn/nexus.h Thu Sep 07 17:32:25 2006 +0000 +++ b/src/protocols/msn/nexus.h Fri Sep 08 16:02:00 2006 +0000 @@ -26,7 +26,8 @@ #include "soap.h" -#define MSN_TWN_SERVER "loginnet.passport.com" +/*#define MSN_TWN_SERVER "loginnet.passport.com"*/ +#define MSN_TWN_SERVER "login.live.com" #define TWN_START_TOKEN "<wsse:BinarySecurityToken Id=\"PPToken1\">" #define TWN_END_TOKEN "</wsse:BinarySecurityToken>" @@ -48,7 +49,8 @@ "<wsse:Password>%s</wsse:Password>"\ "</wsse:UsernameToken>"\ "</wsse:Security>"\ - "</Header><Body>"\ + "</Header>"\ + "<Body>"\ "<ps:RequestMultipleSecurityTokens xmlns:ps=\"http://schemas.microsoft.com/Passport/SoapServices/PPCRL\" Id=\"RSTS\">"\ "<wst:RequestSecurityToken Id=\"RST0\">"\ "<wst:RequestType>http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue</wst:RequestType>"\ @@ -72,6 +74,66 @@ "</Body>"\ "</Envelope>" +#define TWN_LIVE_START_TOKEN "<wsse:BinarySecurityToken Id=\"PPToken1\">" +#define TWN_LIVE_END_TOKEN "</wsse:BinarySecurityToken>" +#define TWN_LIVE_ENVELOP_TEMPLATE "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"\ +"<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2003/06/secext\" xmlns:saml=\"urn:oasis:names:tc:SAML:1.0:assertion\" xmlns:wsp=\"http://schemas.xmlsoap.org/ws/2002/12/policy\" xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\" xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2004/03/addressing\" xmlns:wssc=\"http://schemas.xmlsoap.org/ws/2004/04/sc\" xmlns:wst=\"http://schemas.xmlsoap.org/ws/2004/04/trust\">"\ + "<Header>"\ + "<ps:AuthInfo xmlns:ps=\"http://schemas.microsoft.com/Passport/SoapServices/PPCRL\" Id=\"PPAuthInfo\">"\ + "<ps:HostingApp>{7108E71A-9926-4FCB-BCC9-9A9D3F32E423}</ps:HostingApp>"\ + "<ps:BinaryVersion>4</ps:BinaryVersion>"\ + "<ps:UIVersion>1</ps:UIVersion>"\ + "<ps:Cookies></ps:Cookies>"\ + "<ps:RequestParams>AQAAAAIAAABsYwQAAAAyMDUy</ps:RequestParams>"\ + "</ps:AuthInfo>"\ + "<wsse:Security>"\ + "<wsse:UsernameToken Id=\"user\">"\ + "<wsse:Username>%s</wsse:Username>"\ + "<wsse:Password>%s</wsse:Password>"\ + "</wsse:UsernameToken>"\ + "</wsse:Security>"\ + "</Header>"\ + "<Body>"\ + "<ps:RequestMultipleSecurityTokens xmlns:ps=\"http://schemas.microsoft.com/Passport/SoapServices/PPCRL\" Id=\"RSTS\">"\ + "<wst:RequestSecurityToken Id=\"RST0\">"\ + "<wst:RequestType>http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue</wst:RequestType>"\ + "<wsp:AppliesTo>"\ + "<wsa:EndpointReference>"\ + "<wsa:Address>http://Passport.NET/tb</wsa:Address>"\ + "</wsa:EndpointReference>"\ + "</wsp:AppliesTo>"\ + "</wst:RequestSecurityToken>"\ + "<wst:RequestSecurityToken Id=\"RST1\">"\ + "<wst:RequestType>http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue</wst:RequestType>"\ + "<wsp:AppliesTo>"\ + "<wsa:EndpointReference>"\ + "<wsa:Address>messenger.msn.com</wsa:Address>"\ + "</wsa:EndpointReference>"\ + "</wsp:AppliesTo>"\ + "<wsse:PolicyReference URI=\"%s\"></wsse:PolicyReference>"\ + "</wst:RequestSecurityToken>"\ + "<wst:RequestSecurityToken Id=\"RST2\">"\ + "<wst:RequestType>http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue</wst:RequestType>"\ + "<wsp:AppliesTo>"\ + "<wsa:EndpointReference>"\ + "<wsa:Address>contacts.msn.com</wsa:Address>"\ + "</wsa:EndpointReference>"\ + "</wsp:AppliesTo>"\ + "<wsse:PolicyReference URI=\"?%s\"></wsse:PolicyReference>"\ + " </wst:RequestSecurityToken>"\ + "<wst:RequestSecurityToken Id=\"RST3\">"\ + "<wst:RequestType>http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue</wst:RequestType>"\ + "<wsp:AppliesTo>"\ + "<wsa:EndpointReference>"\ + "<wsa:Address>voice.messenger.msn.com</wsa:Address>"\ + "</wsa:EndpointReference>"\ + " </wsp:AppliesTo>"\ + "<wsse:PolicyReference URI=\"?%s\"></wsse:PolicyReference>"\ + "</wst:RequestSecurityToken>"\ + "</ps:RequestMultipleSecurityTokens>"\ + "</Body>"\ +"</Envelope>" + typedef struct _MsnNexus MsnNexus; struct _MsnNexus