Erreur d'authentification proxy
jdev version: 10.1.2.3.0
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod
PL/SQL Release 10.2.0.4.0 - Production
TNS for Linux: Version 10.2.0.4.0 - Production
Bonjour,
J'ai suivit un tutorial pour contacter un webservcie à l'aide de forms.
http://www.oracle.com/technology/obe...webservice.htm
Pour ma part, je doit passé à travers un proxy firewall
Voici le code jdev de manière à passé le proxy:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public class PrimeNumbersStubnew extends WrappedDocLiteralStub
{
public PrimeNumbersStubnew()
{
m_httpConnection = new OracleSOAPHTTPConnection();
Properties props = new Properties();
props.put(OracleSOAPHTTPConnection.PROXY_HOST, "10.0.2.21");
props.put(OracleSOAPHTTPConnection.PROXY_PORT, "8070");
props.put(OracleSOAPHTTPConnection.PROXY_AUTH_TYPE, "basic");
props.put(OracleSOAPHTTPConnection.PROXY_USERNAME, "XXXXX");
props.put(OracleSOAPHTTPConnection.PROXY_PASSWORD, "XXXXX");
m_httpConnection.setProperties(props);
}
private String _endpoint = "http://www50.brinkster.com/vbfacileinpt/np.asmx";
.... |
Voici l'erreur que je reçois à l'execution du trigger appelant le webservice:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| Exception: java.lang.Exception: [SOAPException: faultCode=SOAP-ENV:Protocol; msg=Unsupported response content type "text/html; charset=utf-8", must be: "text/xml". Response was:
<HTML><HEAD>
<TITLE>Access Denied</TITLE>
</HEAD>
<BODY>
<FONT face="Helvetica">
<big><strong></strong></big><BR>
</FONT>
<blockquote>
<TABLE border=0 cellPadding=1 width="80%">
<TR><TD>
<FONT face="Helvetica">
<big>Access Denied (authentication_failed)</big>
<BR>
<BR>
</FONT>
</TD></TR>
<TR><TD>
<FONT face="Helvetica">
Your credentials could not be authenticated: "Credentials are missing.". You will not be permitted access until your credentials can be verified.
... |
Le serveur proxy me dit que les credentials ne sont pas correct, pourtant je suis sur qu'ils le sont.
Après quelques test je suis arrivé sur quelque chose d'étrange:
Que j'écrive:
Code:
1 2 3 4 5 6 7
| Properties prop = new Properties();
prop.setProperty(OracleSOAPHTTPConnection.PROXY_HOST, "10.0.2.21");
prop.setProperty(OracleSOAPHTTPConnection.PROXY_PORT,"8070");
prop.put(OracleSOAPHTTPConnection.PROXY_AUTH_TYPE, "basic");
prop.put(OracleSOAPHTTPConnection.PROXY_USER, "XXXXX");
prop.put(OracleSOAPHTTPConnection.PROXY_PASS, "XXXXX");
m_httpConnection = new OracleSOAPHTTPConnection(prop); |
Ou cela :
Code:
1 2 3 4
| Properties prop = new Properties();
prop.setProperty(OracleSOAPHTTPConnection.PROXY_HOST, "10.0.2.21");
prop.setProperty(OracleSOAPHTTPConnection.PROXY_PORT,"8070");
m_httpConnection = new OracleSOAPHTTPConnection(prop); |
Le résutat est le même, c'est comme si il ne passait pas le username et le mot de pass.
Et finalmement j'ai tester avec ce code si:
Code:
1 2 3 4 5
| Properties prop = new Properties();
prop.setProperty(OracleSOAPHTTPConnection.ALLOW_USER_INTERACTION,"true");
prop.setProperty(OracleSOAPHTTPConnection.PROXY_HOST, "10.0.2.21");
prop.setProperty(OracleSOAPHTTPConnection.PROXY_PORT,"8070");
m_httpConnection = new OracleSOAPHTTPConnection(prop); |
Code qui fonctionne car grâce à la propriété ALLOW_USER_INTERACTION, il me demande le user, le pass et tout fonctionne correctement ensuite.
Grace à cette propriété, j'ai remarqué qu'il passait par un Realm.
Realm que j'ai ajouté à mon code et qui ne change rien du tout.
Voici les ecrans que la prop ALLOW_USER... a fait apparaitre:
http://www.imageshotel.org/images/Ma...kierequest.jpg
http://www.imageshotel.org/images/Ma...ionrequest.jpg
(Cette solution ne peut pas fonctionné de mon coté car au final, l'application tournera sur un serveur à disposition de l'extérieur)
Pourquoi lorsque je le passe à l'aide des propriété de la connexion cela ne marche pas??
Merci d'avance