사용자 정의 동의 양식 템플리트

OAuth 권한 부여 서버는 주어진 범위에 있는 보호 자원에 액세스하도록 권한 부여되는 OAuth 클라이언트에 관한 사용자 동의 정보를 획득하기 위한 템플리트를 제공합니다. OAuth 클라이언트의 권한 부여 요청은 템플리트에 있는 요청된 범위의 목록을 표시합니다.

WebSphere® Application Server는 정적 HTML 페이지 또는 동적 웹 페이지 중 하나인 동의 양식 템플리트를 허용합니다. 두 경우 모두, 템플리트가 보호되지 않는 웹 자원으로 제공되어야 합니다. WebSphere Application Server 통합에서 양식 검색기는 이 템플리트 URL에 액세스할 때 어떤 인증도 수행하지 않습니다.

WebSphere Application Server OAuth 제공자는 간단한 샘플 동의 양식을 포함하며, oauthFormData 변수를 사용한 사용자 정의를 허용합니다.

동의 양식을 사용자 정의하려면 Javascript를 사용하여 oauthFormData 변수를 편집해야 합니다. 다음 변수가 양식 데이터에 포함되어 있습니다.
  • authorizationUrl - 양식이 제출되는 권한 부여 URL
  • clientDisplayName - 클라이언트의 표시 이름
  • nonce - CSRF(Cross-site request forgery)를 방지하기 위한 무작위 생성 번호
  • client_id - OAuth 2.0 스펙 참조
  • response_type - OAuth 2.0 스펙 참조
  • redirect_uri - OAuth 2.0 스펙 참조
  • state - OAuth 2.0 스펙 참조
  • scope - OAuth 2.0 스펙 참조

양식 템플리트의 개발자는 Javascript를 사용하여 oauthFormData 변수에 있는 것으로 템플리트를 렌더링할 책임이 있습니다. 개발자는 범위 값이 사용자에게 의미있는 값이 되도록 해석해야 합니다. 사용자가 요청을 권한 부여할 때, 개발자는 submitForm(oauthFormData) 메소드를 호출하여 권한 부여를 수행할 술 수 있습니다. submitForm 메소드는 기본적으로 제공됩니다. 그러나 개발자가 OAuth2 프로토콜에 친숙한 경우 OAuth 권한 부여 요청을 제출하기 위한 자신만의 함수를 구현할 수 있습니다.

다국어 지원을 원하는 경우, 요청의 Accept-Language 헤더에 따라서 세계화된 컨텐츠를 리턴하는 동적 페이지를 사용할 수 있습니다. 템플리트를 검색할 때, Accept-Language 헤더도 전달되며 템플리트 개발자가 선호 언어에 관하여 리턴할 컨텐츠를 결정해야 합니다.
문제점 방지 문제점 방지: clientDisplayName 변수는 HTML에서 벗어나지 않습니다. 값이 클라이언트 등록 중에 사용자에 의해 입력되므로 템플리트 개발자는 값을 무결 처리해야 합니다. gotcha
특정 OAuth20 서비스 제공자에 대해 사용자 정의 동의 양식 템플리트 페이지를 사용하려면 서비스 제공자 구성 파일을 업데이트해야 합니다. 제공자 구성에서 oauth20.authorization.form.template 매개변수를 업데이트하고 템플리트 URL을 값으로 추가해야 합니다. 다음 예는 제공자 구성에서 샘플 템플리트 항목을 보여줍니다.
<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>Do you want to allow 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="Yes" onclick="javascript:submitForm(oauthFormData);"/>
    <input type="button" value="No, Thanks"/>
  </div>
</body>
</html>

주제 유형을 표시하는 아이콘 개념 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwbs_oauthcustomconsent
파일 이름:cwbs_oauthcustomconsent.html