Formularschablone für Einwilligungserklärung
Der OAuth-Berechtigungsserver stellt eine Schablone bereit, mit der die Einwilligung des Benutzers eingeholt wird, der darüber entscheiden muss, welche OAuth-Clients für den Zugriff auf die geschützte Ressource in gegebenen Bereichen berechtigt sind. Die Berechtigungsanforderung vom OAuth-Client zeigt eine Liste mit angeforderten Bereichen in der Schablone.
WebSphere Application Server ermöglicht die Verwendung einer statischen HTML-Seite oder einer dynamischen Webseite als Schablone für das Formular mit der Einwilligungserklärung. In beiden Fällen muss die Schablone als ungeschützte Webressource bereitgestellt werden. Die Formularabruffunktion in der Integration von WebSphere Application Server führt keine Authentifizierung durch, wenn sie diesen Schablonen-URI aufruft.
Der OAuth-Provider von WebSphere Application Server stellt ein einfaches Formular mit einer Einwilligungserklärung bereit und ermöglicht die Anpassung mit der Variablen oauthFormData.
- authorizationUrl - der Berechtigungs-URL, an dem das Formular übergeben wird
- clientDisplayName - der Anzeigename des Clients
- nonce - eine generierte Zufallszahl zur Verhinderung von CSRF (Cross-Site Request Forgery, Website-übergreifende Anforderungsfälschung)
- client_id - siehe Spezifikation OAuth 2.0
- response_type - siehe Spezifikation OAuth 2.0
- redirect_uri - siehe Spezifikation OAuth 2.0
- state_type - siehe Spezifikation OAuth 2.0
- scope_type - siehe Spezifikation OAuth 2.0
Der Entwickler einer Formularschablone ist verantwortlich dafür, die Schablone mit den in der Variablen oauthFormData mit Javascript definierten Angaben bereitzustellen. Der Entwickler muss den Bereichswert als einen Wert interpretieren, der für den Benutzer aussagekräftig ist. Wenn ein Benutzer die Anforderung berechtigt, kann der Entwickler die Methode submitForm(oauthFormData) zur Ausführung der Berechtigung aufrufen. Die Methode submitForm wird standardmäßig bereitgestellt. Wenn die Entwickler mit dem Protokoll OAuth2 vertraut sind, können sie jedoch auch ihre eigene Funktion implementieren, um die OAuth-Berechtigungsanforderung zu übergeben.

<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);
// Clientnamen angeben
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>Möchten Sie Client
<span id=client_name style="font-weight:bold">xxxxxxx</span> den Zugriff auf Ihre Daten erlauben?</div>
<div id="oauth_scope"></div>
<div>
<input type="button" value="Yes" onclick="javascript:submitForm(oauthFormData);"/>
<input type="button" value="No, Thanks"/>
</div>
</body>
</html>