You need to sign in to do that
Don't have an account?
basha sk
Hi Everyone,
I'm trying to login external website from salesforce iframes.
For testing I check the URL in browser like below i get the response
URL : https://xxxxxxxx.adobeconnect.com/api/xml?action=login&login=xxxxxxx.com&password=xxxxxxx
Response :
----------
<results>
<status code="ok"/>
<OWASP_CSRF_TOKEN>
<token>
442adc814ed114ac272552be35684e1253444f5d7d5e05b2ee73d72adf287320
</token>
</OWASP_CSRF_TOKEN>
</results>
now i' testing the login in same window with url : https://xxxxxxxx.adobeconnect.com/
now thios it directly opens the home page of my instance.
Now I'm doing the same process through REST api but the browser ignores the token doesn't take the login access
it just opens the login page of my instance.
This is my REST API please check it once
Apex class:
--------------
public class CreateEvent{
public Test__c login;
public CreateEvent(ApexPages.StandardSetController controller){
this.login= (Test__c)controller.getRecord();
}
public CreateEvent(ApexPages.StandardController controller){}
public Pagereference processCheck(){
CreateWebinar.postfieldsFuture(username,password,url,cookie);
PageReference pageref2 = new PageReference('/apex/AdobeIframe');
return pageref;
REST API
---------
global class CreateWebinar{
@future (callout=true)
global static void postfieldsFuture(String username, String password,String url,String cookie){
getParticipants(username, password, url,cookie);
}
global static HttpResponse getParticipants(String username, String password,String url,String cookie){
Http http = new Http();
HttpRequest req = new HttpRequest();
HttpResponse res = new HttpResponse();
Blob headerValue = Blob.valueOf(username + ':' + password);
String authorizationHeader = 'BASIC ' +
EncodingUtil.base64Encode(headerValue);
req.setHeader('Authorization', authorizationHeader);
req.setEndpoint(url+'/api/xml?action=login&login='+username+'&password='+password+'&domain=acme.adobe.com&session='+cookie);
req.setMethod('GET');
req.setHeader('Content-Type', 'application/json');
req.setHeader('Accept','application/json');
res = http.send(req);
String[] headerkeys = res.getHeaderKeys();
Map<string, string> headers = new map<string, string>();
for(string s : headerkeys){
headers.put(s,res.getHeader(s));
system.debug('header: ' + s + ' value: ' + res.getHeader(s));
}
//HeaderValues:======(Server, Cache-Control, Connection, Set-Cookie, Expires, Content-Length, Date, Content-Type)
System.debug('HeaderValues:======'+headerkeys);
System.debug('MyResult == :'+res.getBody());
}
}
Adobe Iframe
----------------
<apex:page>
<apex:iframe height="800" width="1230" src="https://meet30705009.adobeconnect.com?domain=acme.adobeconnect.com&Set-Cookie=apac1breeztxw8g5cx2g4x8wh6" scrolling="true"/>
</apex:page>
how to login to my instance ondemand through iframes please check it once
if anyone having idea please let me know
Thanks
Basha
External website doesn't login ondemand through salesforce iframes?
Hi Everyone,
I'm trying to login external website from salesforce iframes.
For testing I check the URL in browser like below i get the response
URL : https://xxxxxxxx.adobeconnect.com/api/xml?action=login&login=xxxxxxx.com&password=xxxxxxx
Response :
----------
<results>
<status code="ok"/>
<OWASP_CSRF_TOKEN>
<token>
442adc814ed114ac272552be35684e1253444f5d7d5e05b2ee73d72adf287320
</token>
</OWASP_CSRF_TOKEN>
</results>
now i' testing the login in same window with url : https://xxxxxxxx.adobeconnect.com/
now thios it directly opens the home page of my instance.
Now I'm doing the same process through REST api but the browser ignores the token doesn't take the login access
it just opens the login page of my instance.
This is my REST API please check it once
Apex class:
--------------
public class CreateEvent{
public Test__c login;
public CreateEvent(ApexPages.StandardSetController controller){
this.login= (Test__c)controller.getRecord();
}
public CreateEvent(ApexPages.StandardController controller){}
public Pagereference processCheck(){
CreateWebinar.postfieldsFuture(username,password,url,cookie);
PageReference pageref2 = new PageReference('/apex/AdobeIframe');
return pageref;
REST API
---------
global class CreateWebinar{
@future (callout=true)
global static void postfieldsFuture(String username, String password,String url,String cookie){
getParticipants(username, password, url,cookie);
}
global static HttpResponse getParticipants(String username, String password,String url,String cookie){
Http http = new Http();
HttpRequest req = new HttpRequest();
HttpResponse res = new HttpResponse();
Blob headerValue = Blob.valueOf(username + ':' + password);
String authorizationHeader = 'BASIC ' +
EncodingUtil.base64Encode(headerValue);
req.setHeader('Authorization', authorizationHeader);
req.setEndpoint(url+'/api/xml?action=login&login='+username+'&password='+password+'&domain=acme.adobe.com&session='+cookie);
req.setMethod('GET');
req.setHeader('Content-Type', 'application/json');
req.setHeader('Accept','application/json');
res = http.send(req);
String[] headerkeys = res.getHeaderKeys();
Map<string, string> headers = new map<string, string>();
for(string s : headerkeys){
headers.put(s,res.getHeader(s));
system.debug('header: ' + s + ' value: ' + res.getHeader(s));
}
//HeaderValues:======(Server, Cache-Control, Connection, Set-Cookie, Expires, Content-Length, Date, Content-Type)
System.debug('HeaderValues:======'+headerkeys);
System.debug('MyResult == :'+res.getBody());
}
}
Adobe Iframe
----------------
<apex:page>
<apex:iframe height="800" width="1230" src="https://meet30705009.adobeconnect.com?domain=acme.adobeconnect.com&Set-Cookie=apac1breeztxw8g5cx2g4x8wh6" scrolling="true"/>
</apex:page>
how to login to my instance ondemand through iframes please check it once
if anyone having idea please let me know
Thanks
Basha
Based on your description there is almost certainly a session cookie involved in the authentication process.
When you make the direct request to the browser the resulting cookie will be kept for subsequent requests.
However, when you make the direct HTTP call from Apex the resulting cookie will be ignored.
Check the HttpResponse.getHeaderKeys() for the cookie that comes back.
Now you have the cookie you will need to make all subsequent requests from Apex as well as you won't be able to set a browser cookie in the *.adobeconnect.com domain from Salesforce.
Hope this helps.
Kindly mark this as solved if the information was helpful.
Thanks,
Nagendra
String[] headerkeys = res.getHeaderKeys();
Map<string, string> headers = new map<string, string>();
for(string s : headerkeys){
headers.put(s,res.getHeader(s));
system.debug('header: ' + s + ' value: ' + res.getHeader(s));
}
Please chekc my REST API I'm getting the return cookiw value but how can I use this for login attempt further.please help i tried this from last three days.Thanks