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.

Pour personnaliser le formulaire d'accord, vous devez éditer la variable oauthFormData à l'aide de Javascript. Les variables suivantes sont incluses dans les données de formulaire :
  • 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.

Si la globalisation est demandée, vous pouvez utiliser une page dynamique qui renvoie un contenu globalisé en fonction de l'en-tête Accept-Language de la demande. Lors de l'extraction du modèle, l'en-tête Accept-Language est également transféré, et le développeur de modèles doit décider du contenu à renvoyer selon la langue préférée.
Eviter les incidents Eviter les incidents: La variable clientDisplayName ne fait l'objet d'aucune séquence d'échappement dans HTML. Le développeur de modèles doit assainir la valeur, celle-ci étant entrée un utilisateur lors de l'enregistrement du client.gotcha
Pour utiliser la page de modèle de formulaire d'accord personnalisée pour un fournisseur de services OAuth20 particulier, vous devez mettre à jour le fichier de configuration du fournisseur de services. Dans la configuration du fournisseur, vous devez mettre à jour le paramètre oauth20.authorization.form.template et ajouter l'URL du modèle en tant que valeur. L'exemple ci-dessous illustre un exemple d'entrée de modèle dans la configuration du fournisseur :
<parameter name="oauth20.authorization.form.template" type="cc" customizable="true">
  <value>https://acme.com:9043/oath20/template.html</value>
</parameter>
L'exemple suivant illustre un modèle de formulaire d'accord :
<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>

Icône indiquant le type de rubrique Rubrique de concept



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwbs_oauthcustomconsent
Nom du fichier : cwbs_oauthcustomconsent.html