Modèle de formulaire d'accord personnalisé
Le serveur d'autorisation OAuth fournit un modèle d'acquisition des informations d'accord relatives aux clients OAuth autorisés à accéder à la ressource protégée dans des portées données. La demande d'autorisation formulée par le client OAuth affiche une liste des portées demandées dans le modèle.
Dans WebSphere Application Server, le modèle de formulaire d'accord peut être une page HTML statique ou une page Web dynamique. Dans les deux cas, le modèle doit être fourni en tant que ressource Web non protégée. L'extracteur de formulaire de l'intégration WebSphere Application Server ne procède à aucune authentification lors de l'accès à ce modèle d'URL.
Le fournisseur OAuth WebSphere Application Server inclut un simple modèle de formulaire d'accord et permet la personnalisation à l'aide de la variable oauthFormData.
- authorizationUrl - URL d'autorisation dans laquelle le formulaire est soumis
- clientDisplayName - nom affiché du client
- nonce - numéro aléatoire généré pour éviter les falsifications de requêtes intersites (CSRF)
- client_id - voir la spécification OAuth 2.0
- response_type - voir la spécification OAuth 2.0
- redirect_uri - voir la spécification OAuth 2.0
- state - voir la spécification OAuth 2.0
- scope - voir la spécification OAuth 2.0
Le développeur d'un modèle de formulaire est chargé du rendu du modèle contenant les éléments de la variable oauthFormData avec Javascript. Il doit interpréter la valeur de portée comme étant une valeur significative pour un utilisateur. Lorsqu'un utilisateur autorise la demande, le développeur peut appeler la méthode submitForm(oauthFormData) pour procéder à l'autorisation. La méthode submitForm est fournie par défaut. Toutefois, si les développeurs maîtrisent bien le protocole OAuth2, ils peuvent implémenter leur propre fonction pour soumettre la demande d'autorisation OAuth.

<parameter name="oauth20.authorization.form.template" type="cc" customizable="true">
<value>https://acme.com:9043/oath20/template.html</value>
</parameter>
<parameter name="oauth20.authorization.loginURL" type="cc" customizable="true">
<value>https://acme.com:9043/oath20/login.jsp</value>
</parameter>
function escapeHTML(str) {
var ele = document.createElement("div");
ele.innerText = ele.textContent = str;
return ele.innerHTML;
}
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>OAuth authorization form</title>
<script language="javascript">
function init() {
var scope = oauthFormData.scope;
var scopeEle = document.getElementById("oauth_scope");
var ul = document.createElement("ul");
if(scope) {
for(var i=0; i< scope.length; i++) {
var n = document.createElement("li");
n.innerHTML = scope[i];
ul.appendChild(n);
}
}
scopeEle.appendChild(ul);
// set client name
var clientEle = document.getElementById("client_name");
clientEle.innerHTML = escapeHTML(oauthFormData.clientDisplayName);
}
function escapeHTML(str) {
var ele = document.createElement("div");
ele.innerText = ele.textContent = str;
return ele.innerHTML;
}
</script>
</head>
<body onload="init()">
<div>Souhaitez-vous autoriser le client
<span id=client_name style="font-weight:bold">xxxxxxx</span> to access your data?</div>
<div id="oauth_scope"></div>
<div>
<input type="button" value="Oui" onclick="javascript:submitForm(oauthFormData);"/>
<input type="button" value="Non, merci"/>
</div>
</body>
</html>