Plantilla de formulario de consentimiento personalizado

El servidor de autorización OAuth proporciona una plantilla para adquirir información de consentimiento del usuario sobre qué clientes de OAuth están autorizados para acceder al recurso protegido en ámbitos determinados. La solicitud de autorización del cliente de OAuth muestra una lista de ámbitos solicitados en la plantilla.

WebSphere Application Server permite que la plantilla de formulario de consentimiento sea una página HTML estática o una página web dinámica. En ambos casos, la plantilla debe proporcionarse como un recurso web desprotegido. El recuperador del formulario en la integración de WebSphere Application Server no realiza ninguna autenticación cuando accede a este URL de plantilla.

El proveedor OAuth de WebSphere Application Server incluye un formulario de consentimiento de ejemplo simple y permite la personalización utilizando la variable oauthFormData.

Para personalizar el formulario de consentimiento, debe editar la variable oauthFormData utilizando Javascript. Las variables siguientes se incluyen en los datos del formulario:
  • authorizationUrl - el URL de autorización donde se está enviando el formulario
  • clientDisplayName - el nombre de visualización del cliente
  • nonce - número generado aleatoriamente para evitar la falsificación de solicitudes entre distintos sitios (CSRF, por sus siglas en inglés)
  • client_id - consulte la especificación OAuth 2.0
  • response_type - consulte la especificación OAuth 2.0
  • redirect_uri - consulte la especificación OAuth 2.0
  • state - consulte la especificación OAuth 2.0
  • scope - consulte la especificación OAuth 2.0

El desarrollador de una plantilla de formulario es responsable de representar la plantilla con el contenido de la variable oauthFormData con Javascript. El desarrollador debe interpretar el valor del ámbito para que sea un valor significativo para un usuario. Cuando un usuario autoriza la solicitud, el desarrollador puede llamar al método submitForm(oauthFormData) para realizar la autorización. El método submitForm se proporciona de forma predeterminada. Sin embargo, si los desarrolladores están familiarizados con el protocolo OAuth2, pueden implementar su propia función para enviar la solicitud de autorización OAuth.

Si se desea la globalización, puede utilizar una página dinámica que devuelve contenido globalizado de acuerdo con la cabecera Accept-Language de la solicitud. Al recuperar la plantilla, la cabecera Accept-Language también se envía, y el desarrollador de la plantilla debe decidir qué contenido se debe volver a ejecutar por lo que respecta al idioma preferido.
Avoid trouble Avoid trouble: La variable clientDisplayName no se escapa en HTML. El desarrollador de la plantilla debe sanear el valor, puesto que el valor lo introduce un usuario durante el registro del cliente. gotcha
Para utilizar una página de plantilla de formulario de consentimiento personalizado para un proveedor de servicios OAuth20 específico, debe actualizar el archivo de configuración del proveedor de servicios. En la configuración del proveedor, debe actualizar el parámetro oauth20.authorization.form.template y añadir el URL de la plantilla como valor. El ejemplo siguiente muestra una entrada de plantilla de ejemplo en la configuración del proveedor:
<parameter name="oauth20.authorization.form.template" type="cc" customizable="true">
  <value>https://acme.com:9043/oath20/template.html</value>
</parameter>
En el ejemplo siguiente se muestra un formulario de consentimiento de ejemplo:
<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);
		// establecer nombre de cliente
		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>¿Desea permitir que el cliente
    <span id=client_name style="font-weight:bold">xxxxxxx</span> acceda a sus datos?</div>
  <div id="oauth_scope"></div>
  <div>
    <input type="button" value="Sí" onclick="javascript:submitForm(oauthFormData);"/>
    <input type="button" value="No, gracias"/>
  </div>
</body>
</html>

Icon that indicates the type of topic Concept topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwbs_oauthcustomconsent
File name: cwbs_oauthcustomconsent.html