2.2. JavaScript adapter
Red Hat Single Sign-On에는 HTML5/JavaScript 애플리케이션을 보호하는 데 사용할 수 있는 클라이언트 측 JavaScript 라이브러리가 포함되어 있습니다. JavaScript 어댑터에는 Cordova 애플리케이션에 대한 지원이 내장되어 있습니다.
이러한 문제를 해결하기 위해서는 JavaScript 어댑터를 application에 포함시키는 것이 좋습니다. 이 어댑터는 10.0.0.1 또는 Yarn과 같은 패키지 관리자를 사용하여 애플리케이션에 추가하는 것입니다. keycloak-js 패키지는 다음 위치에서 사용할 수 있습니다.
또는 /auth/js/keycloak.js 의 Red Hat Single Sign-On 서버에서 직접 라이브러리를 검색할 수 있으며 ZIP 아카이브로 배포됩니다.
클라이언트 측 애플리케이션 사용에 대해 유의해야 할 한 가지 중요한 사항은 클라이언트 측 애플리케이션에 클라이언트 자격 증명을 저장하는 안전한 방법이 없기 때문에 클라이언트가 공용 클라이언트여야 한다는 것입니다. 이렇게 하면 클라이언트에 대해 구성한 리디렉션 URI가 정확하고 가능한 한 구체적으로 확인하는 것이 매우 중요합니다.
JavaScript 어댑터를 사용하려면 먼저 Red Hat Single Sign-On 관리 콘솔에서 애플리케이션에 사용할 클라이언트를 생성해야 합니다. 액세스 유형에 대해 공용 이 선택되어 있는지 확인합니다. 이 작업은 OFF 클라이언트 인증 토글을 전환하여 Capability config에서 수행할 수 있습니다.
또한 유효한 리디렉션 URI 및 Web Origins 를 구성해야 합니다. 가능한 한 구체적으로 하지 않으면 보안 취약점이 발생할 수 있습니다.
클라이언트가 생성되면 오른쪽 상단에 있는 Action 탭을 클릭하고 Download adapter config 를 선택합니다. 형식 옵션에 대해 다음 Keycloak OIDC JSON 을 선택한다운로드를 클릭합니다. 다운로드한 keycloak.json 파일은 웹 서버에서 HTML 페이지와 동일한 위치에 호스팅되어야 합니다.
또는 구성 파일을 건너뛰고 어댑터를 수동으로 구성할 수 있습니다.
다음 예제에서는 JavaScript 어댑터를 초기화하는 방법을 보여줍니다.
<html>
<head>
<script src="keycloak.js"></script>
<script>
function initKeycloak() {
const options = {};
const keycloak = new Keycloak();
keycloak.init(options)
.then(function(authenticated) {
console.log('keycloak:' + (authenticated ? 'authenticated' : 'not authenticated'));
}).catch(function(error) {
for (const property in error) {
console.error(`${property}: ${error[property]}`);
}
});
}
</script>
</head>
<body onload="initKeycloak()">
<!-- your page content goes here -->
</body>
</html>
keycloak.json 파일이 다른 위치에 있는 경우 다음을 지정할 수 있습니다.
const keycloak = new Keycloak('http://localhost:8080/myapp/keycloak.json');
또는 다음과 같이 필요한 구성을 사용하여 JavaScript 개체를 전달할 수 있습니다.
const keycloak = new Keycloak({
url: 'http://keycloak-server$/auth',
realm: 'myrealm',
clientId: 'myapp'
});
기본적으로 인증하려면 로그인 함수를 호출해야 합니다. 그러나 어댑터를 자동으로 인증할 수 있는 두 가지 옵션이 있습니다. login-required 또는 check-sso 를 init 함수에 전달할 수 있습니다. 사용자가 Red Hat Single Sign-On에 로그인한 경우 로그인이 필요한 경우 클라이언트를 인증하거나 그렇지 않은 경우 로그인 페이지를 표시합니다. check-sso 는 사용자가 이미 로그인한 경우에만 클라이언트를 인증합니다. 브라우저가 로그인되지 않은 경우 다시 애플리케이션으로 리디렉션되고 인증되지 않은 상태로 유지됩니다.
자동 check-sso 옵션을 구성할 수 있습니다. 이 기능을 사용하면 브라우저가 Red Hat Single Sign-On 서버로 전체 리디렉션을 수행하지 않고 애플리케이션에 다시 리디렉션되지 않지만 숨겨진 iframe에서 이 작업을 수행할 수 있으므로, 애플리케이션이 초기화될 때 브라우저에서 한 번만 로드하고 구문 분석하면 Red Hat Single Sign-On에서 다시 리디렉션되지 않습니다. 이는 SPA(Single Page Applications)의 경우 특히 유용합니다.
자동 check-sso 를 활성화하려면 init 메서드에서 silentCheckSsoRedirectUri 속성을 제공해야 합니다. 이 URI는 애플리케이션에서 유효한 엔드포인트여야 하며, Red Hat Single Sign-On 관리 콘솔에서 클라이언트에 대한 유효한 리디렉션으로 구성해야 합니다.
keycloak.init({
onLoad: 'check-sso',
silentCheckSsoRedirectUri: window.location.origin + '/silent-check-sso.html'
})
인증 상태를 성공적으로 확인하고 Red Hat Single Sign-On 서버에서 토큰을 검색한 후 자동 check-sso 리디렉션 uri의 페이지가 iframe에 로드됩니다. 수신한 토큰을 기본 애플리케이션에 보내는 것 외에는 다른 작업이 없으며 다음과 같이 표시되어야 합니다.
<html>
<body>
<script>
parent.postMessage(location.href, location.origin)
</script>
</body>
</html>
지정된 위치에 있는 이 페이지는 애플리케이션 자체에서 제공해야 하며 JavaScript 어댑터의 일부가 아닙니다!
자동 검사 기능은 일부 최신 브라우저에서 제한됩니다. 추적 보호 기능이 있는 최신 website를 참조하십시오.
Load에서 login-required 를 login-required 로 설정하고 init 메서드로 전달하려면 다음을 수행합니다.
keycloak.init({
onLoad: 'login-required'
})
사용자가 인증되면 애플리케이션은 권한 부여 헤더에 전달자 토큰을 포함하여 Red Hat Single Sign-On에서 보호한 RESTful 서비스에 요청할 수 있습니다. 예를 들면 다음과 같습니다.
const loadData = function () {
document.getElementById('username').innerText = keycloak.subject;
const url = 'http://localhost:8080/restful-service';
const req = new XMLHttpRequest();
req.open('GET', url, true);
req.setRequestHeader('Accept', 'application/json');
req.setRequestHeader('Authorization', 'Bearer ' + keycloak.token);
req.onreadystatechange = function () {
if (req.readyState == 4) {
if (req.status == 200) {
alert('Success');
} else if (req.status == 403) {
alert('Forbidden');
}
}
}
req.send();
};
한 가지 유의할 점은 액세스 토큰에 기본적으로 짧은 수명이 만료되므로 요청을 보내기 전에 액세스 토큰을 새로 고쳐야 할 수 있다는 것입니다. updateToken 메서드로 이 작업을 수행할 수 있습니다. updateToken 메서드는 토큰이 성공적으로 새로 고쳐진 경우에만 서비스를 쉽게 호출할 수 있도록 하고 그렇지 않은 경우 사용자에게 오류를 표시할 수 있도록 합니다. 예를 들면 다음과 같습니다.
keycloak.updateToken(30).then(function() {
loadData();
}).catch(function() {
alert('Failed to refresh token');
});
2.2.1. 세션 상태 iframe 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 JavaScript 어댑터는 Single-Sign Out이 발생했는지를 감지하는 데 사용되는 숨겨진 iframe을 만듭니다. 이 명령은 네트워크 트래픽이 필요하지 않으며, 대신 특수 상태 쿠키를 확인하여 상태를 검색합니다. 이 기능은 init 메서드로 전달되는 옵션에서 checkLoginIframe: false 를 설정하여 비활성화할 수 있습니다.
이 쿠키를 직접 확인하는 데 의존해서는 안 됩니다. 해당 형식은 변경될 수 있으며 애플리케이션이 아닌 Red Hat Single Sign-On 서버의 URL과도 연결됩니다.
세션 상태 iframe 기능은 일부 최신 브라우저에서 제한됩니다. 추적 방지 섹션이 있는 Modernloadbalancings를 참조하십시오.
2.2.2. 암시적 및 하이브리드 흐름 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 JavaScript 어댑터는 인증 코드 흐름을 사용합니다.
이 흐름을 통해 Red Hat Single Sign-On 서버는 인증 토큰이 아닌 권한 부여 코드를 애플리케이션에 반환합니다. JavaScript 어댑터는 브라우저가 애플리케이션으로 리디렉션된 후 액세스 토큰과 새로 고침 토큰을 교체합니다.
Red Hat Single Sign-On은 Red Hat Single Sign-On을 사용한 성공적인 인증 직후 액세스 토큰이 전송되는 Implicit flow를 지원합니다. 토큰 코드를 교환하라는 추가 요청이 없기 때문에 표준 흐름보다 성능이 향상될 수 있지만 액세스 토큰이 만료되면 영향을 미칩니다.
그러나 URL 조각에 액세스 토큰을 전송하는 것은 보안 취약점이 될 수 있습니다. 예를 들어 웹 서버 로그 및 브라우저 기록을 통해 토큰이 유출될 수 있습니다.
암시적 흐름을 활성화하려면 Red Hat Single Sign-On 관리 콘솔에서 클라이언트에 대해 Implicit Flow Enabled 플래그를 활성화해야 합니다. 또한 값이 암시적인 init 메서드로 매개변수 흐름을 전달해야 합니다.
keycloak.init({
flow: 'implicit'
})
한 가지 주목할 점은 액세스 토큰만 제공되며 새로 고침 토큰이 없다는 것입니다. 즉, 액세스 토큰이 만료되면 애플리케이션이 Red Hat Single Sign-On으로 리디렉션하여 새 액세스 토큰을 다시 가져와야 합니다.
Red Hat Single Sign-On은 하이브리드 흐름도 지원합니다.
이를 위해 클라이언트는 관리 콘솔에서 표준 흐름 사용 및 Implicit Flow Enabled 플래그를 모두 사용하도록 설정해야 합니다. 그러면 Red Hat Single Sign-On 서버가 애플리케이션에 코드와 토큰을 모두 보냅니다. 액세스 및 새로 고침 토큰을 위해 코드를 교환하는 동안 즉시 액세스 토큰을 사용할 수 있습니다. 암시적 흐름과 유사하게, 액세스 토큰을 즉시 사용할 수 있기 때문에 하이브리드 흐름이 성능에 적합합니다. 그러나 토큰은 URL로 계속 전송되며 이전에 언급한 보안 취약점이 계속 적용될 수 있습니다.
하이브리드 흐름의 한 가지 장점은 새로 고침 토큰을 애플리케이션에 사용할 수 있다는 것입니다.
하이브리드 흐름의 경우 값 하이브리드 를 사용하여 매개 변수 흐름을 init 메서드에 전달해야 합니다.
keycloak.init({
flow: 'hybrid'
})
2.2.3. Cordova를 사용한 하이브리드 앱 링크 복사링크가 클립보드에 복사되었습니다!
Keycloak은 Apache Cordova 로 개발된 하이브리드 모바일 애플리케이션을 지원합니다. JavaScript 어댑터에는 cordova 및 cordova-native 의 두 가지 모드가 있습니다.
기본값은 cordova이며 어댑터 유형이 구성되지 않은 경우 어댑터가 자동으로 선택되고 window.cordova가 있습니다. 로그인할 때 사용자가 Red Hat Single Sign-On과 상호 작용하고 나중에 http://localhost 로 리디렉션하여 애플리케이션으로 돌아갈 수 있는 InApp browser가 열립니다. 이로 인해 Admin Console의 클라이언트 구성 섹션에 이 URL을 유효한 redirect-uri로 허용 목록에 추가해야 합니다.
이 모드는 설정하기 쉽지만 몇 가지 단점도 있습니다.
- InApp-Forwardedr는 앱에 포함된 브라우저이며 휴대폰의 기본 브라우저가 아닙니다. 따라서 설정이 다르며 저장된 자격 증명을 사용할 수 없습니다.
- 특히 더 복잡한 요소를 렌더링할 때 InApp->-<r도 느려질 수 있습니다.
- 이 모드를 사용하기 전에 앱이 로그인 페이지를 렌더링하는 브라우저를 완전히 제어할 수 있으므로 신뢰할 수 없는 앱에서의 사용을 허용하지 않도록 이 모드를 사용하기 전에 고려해야 할 사항이 있습니다.
이 예제 앱을 사용하여 시작하는 데 도움이 됩니다. https://github.com/keycloak/keycloak/tree/master/examples/cordova
대체 모드 cordova-native 는 다른 접근 방식을 취합니다. 시스템 브라우저를 사용하여 로그인 페이지를 엽니다. 사용자가 인증되면 브라우저가 특수 URL을 사용하여 앱에 다시 리디렉션됩니다. 여기에서 Red Hat Single Sign-On 어댑터는 URL에서 코드 또는 토큰을 읽고 로그인을 완료할 수 있습니다.
어댑터 유형 cordova-native 를 init 메서드에 전달하여 기본 모드를 활성화할 수 있습니다.
keycloak.init({
adapter: 'cordova-native'
})
이 어댑터에는 두 개의 추가 플러그인이 필요합니다.
- Cordova-plugin-browsertab: 앱이 시스템 브라우저에서 웹 페이지를 열 수 있습니다.
- Cordova-plugin-deeplinks: 브라우저가 특수 URL로 다시 리디렉션되도록 허용
앱에 연결하는 데 필요한 기술적 세부 사항은 플랫폼마다 다르며 특수 설정이 필요합니다. 자세한 내용은 딥링크 플러그인 문서 의 안 드 로이드 및 iOS 섹션을 참조하십시오.
앱 열기 방법에는 사용자 지정 체계(예: myapp://login 또는 iPXE -app://com.example.myapp/https/example.com/login) 및 Universal Links (iOS)) / Deep Links( octavia)의 다양한 종류가 있습니다. 전자는 설정하기가 쉽고 더 안정적으로 작동하는 경향이 있지만 나중에 고유하므로 도메인 소유자 만 추가 보안을 제공합니다. Custom-URLs는 iOS에서 더 이상 사용되지 않습니다. 최상의 안정성을 위해 사용자 정의 URL 링크가 포함된 대체 사이트와 결합된 범용 링크를 사용하는 것이 좋습니다.
또한 Keycloak 어댑터와의 호환성을 개선하기 위해 다음 단계를 권장합니다.
-
iOS의 Universal Links가
쿼리로 설정된응답 모드를사용하여 보다 안정적으로 작동하는 것처럼 보입니다. -
incorrect가 리디렉션에서 앱의 새 인스턴스를 열지 못하도록 하려면
config.xml에 다음 스니펫을 추가합니다.
<preference name="AndroidLaunchMode" value="singleTask" />
네이티브 모드 사용 방법을 보여주는 앱 예제: https://github.com/keycloak/keycloak/tree/master/examples/cordova-native
2.2.4. 사용자 정의 어댑터 링크 복사링크가 클립보드에 복사되었습니다!
경우에 따라 기본적으로 지원되지 않는 환경에서 JavaScript 클라이언트를 실행해야 합니다(예: Capacitor). 이러한 종류의 알 수 없는 환경에서 JavasScript 클라이언트를 사용할 수 있도록 사용자 지정 어댑터를 전달할 수 있습니다. 예를 들어, 타사 라이브러리에서는 이러한 어댑터를 제공하여 문제 없이 JavaScript 클라이언트를 실행할 수 있습니다.
import Keycloak from 'keycloak-js';
import KeycloakCapacitorAdapter from 'keycloak-capacitor-adapter';
const keycloak = new Keycloak();
keycloak.init({
adapter: KeycloakCapacitorAdapter,
});
이 특정 패키지는 존재하지 않지만 이러한 어댑터를 클라이언트에 전달하는 방법에 대한 좋은 예를 제공합니다.
또한 고유한 어댑터를 만들 수 있으므로 KeycloakAdapter 인터페이스에 설명된 메서드를 구현해야 합니다. 예를 들어 다음 TypeScript 코드는 모든 메서드가 올바르게 구현되도록 합니다.
import Keycloak, { KeycloakAdapter } from 'keycloak-js';
// Implement the 'KeycloakAdapter' interface so that all required methods are guaranteed to be present.
const MyCustomAdapter: KeycloakAdapter = {
login(options) {
// Write your own implementation here.
}
// The other methods go here...
};
const keycloak = new Keycloak();
keycloak.init({
adapter: MyCustomAdapter,
});
당연히 유형 정보를 생략하여 TypeScript 없이 이 작업을 수행할 수도 있지만, 인터페이스를 올바르게 구현하는 것은 전적으로 사용자에게 맡겨집니다.
2.2.5. 이전 browsers 링크 복사링크가 클립보드에 복사되었습니다!
JavaScript 어댑터는 Base64(window.btoa 및 window.atob), HTML5 기록 API 및 선택적으로 Promise API에 따라 다릅니다. 사용할 수 없는 브라우저 (예: IE9)를 지원해야 하는 경우 polyfiller를 추가해야 합니다.
예제 polyfill 라이브러리:
2.2.6. 추적 보호 기능이 있는 최신 website 링크 복사링크가 클립보드에 복사되었습니다!
일부 브라우저의 최신 버전에서 다양한 쿠키 정책이 적용되어 Chrome의 SameSite와 같은 타사 쿠키를 추적하거나 타사 쿠키를 완전히 차단할 수 있습니다. 이러한 정책이 더욱 제한되고 시간이 지남에 따라 다른 브라우저에서 채택되어 결국 타사 컨텍스트에서 쿠키가 완전히 지원되고 차단될 것으로 예상됩니다. 이 문제의 영향을 받는 어댑터 기능은 나중에 더 이상 사용되지 않을 수 있습니다.
JavaScript 어댑터는 세션 상태 iframe, 자동 검사에 대한 타사 쿠키를 사용하고 일부는 일반 (비일명) 검사를 위해 부분적으로 사용됩니다. 이러한 기능은 기능이 제한되거나 브라우저가 쿠키와 관련하여 제한적인 방법에 따라 완전히 비활성화되어 있습니다. 어댑터는 이 설정을 탐지하여 적절하게 대응합니다.
2.2.6.1. "SameSite=L Galaxy by Default" 정책이 있는 브라우저 링크 복사링크가 클립보드에 복사되었습니다!
애플리케이션 측뿐만 아니라 Red Hat Single Sign-On 측에 SSL/TLS 연결이 구성된 경우 모든 기능이 지원됩니다. 이는 버전 84부터 Chrome의 영향을 받습니다.
2.2.6.2. 차단된 타사 쿠키 사용 브라우저 링크 복사링크가 클립보드에 복사되었습니다!
세션 상태 iframe은 지원되지 않으며 JS 어댑터에서 이러한 브라우저 동작이 감지되면 자동으로 비활성화됩니다. 즉 어댑터는 Single Sign-Out 감지에 세션 쿠키를 사용할 수 없으며 토큰에 전적으로 의존해야 합니다. 즉, 사용자가 다른 창에서 로그아웃하면 JavaScript 어댑터를 사용하는 애플리케이션은 액세스 토큰을 새로 고침하려고 할 때까지 로그아웃되지 않습니다. 따라서 액세스 토큰 라이프스패스를 상대적으로 짧은 시간으로 설정하여 로그 아웃이 나중에 아닌 더 빨리 감지되도록 하는 것이 좋습니다. 세션 및 토큰 시간 초과를 참조하십시오.
자동 는 지원되지 않으며 기본적으로 일반(일실) 검사로 대체됩니다. 이 동작은 check-sso init 메서드로 전달된 옵션에 silentCheckSsoFallback: false 를 설정하여 변경할 수 있습니다. 이 경우 제한적인 브라우저 동작이 감지되면 check-sso 는 완전히 비활성화됩니다.
정기 적인 검사 도 영향을 받습니다. 세션 상태 iframe은 지원되지 않으므로 어댑터가 초기화되어 사용자의 로그인 상태를 확인하도록 Red Hat Single Sign-On에 대한 추가 리디렉션을 수행해야 합니다. 이 동작은 사용자가 로그인했는지 여부를 확인하는 데 iframe을 사용하는 경우 표준 동작과 다르며 로그아웃된 경우에만 리디렉션이 수행됩니다.
영향을 받는 브라우저는 예를 들어 버전 13.1부터 시작하여 Safari입니다.
2.2.7. JavaScript Adapter 참조 링크 복사링크가 클립보드에 복사되었습니다!
2.2.7.1. 생성자 링크 복사링크가 클립보드에 복사되었습니다!
new Keycloak();
new Keycloak('http://localhost/keycloak.json');
new Keycloak({ url: 'http://localhost/auth', realm: 'myrealm', clientId: 'myApp' });
2.2.7.2. 속성 링크 복사링크가 클립보드에 복사되었습니다!
- authenticated
-
사용자가 인증되면
true이고, 그렇지 않으면false입니다. - 토큰
-
요청에
권한 부여헤더로 보낼 수 있는 base64 인코딩 토큰입니다. - tokenParsed
- JavaScript 오브젝트로 구문 분석된 토큰입니다.
- subject
- 사용자 ID입니다.
- idToken
- base64로 인코딩된 ID 토큰입니다.
- idTokenParsed
- JavaScript 오브젝트로 구문 분석된 id 토큰입니다.
- realmAccess
- 토큰과 연결된 영역 역할입니다.
- resourceAccess
- 토큰과 연결된 리소스 역할입니다.
- refreshToken
- 새 토큰을 검색하는 데 사용할 수 있는 base64로 인코딩된 새로 고침 토큰입니다.
- refreshTokenParsed
- 구문 분석된 새로 고침 토큰을 JavaScript 오브젝트로 사용합니다.
- timeSkew
- 브라우저 시간과 Red Hat Single Sign-On 서버 간의 예상 시간 차이(초)입니다. 이 값은 추정치일 뿐이지만 토큰이 만료되었는지 여부를 확인할 때 충분히 정확합니다.
- responseMode
- init로 전달되는 응답 모드(기본값은 조각임).
- flow
- init에서 전달된 흐름입니다.
- Adapter
라이브러리에서 리디렉션 및 기타 브라우저 관련 기능을 처리하는 방법을 재정의할 수 있습니다. 사용 가능한 옵션:
- "default" - 라이브러리에서 리디렉션에 브라우저 api를 사용합니다(기본값: 기본값)
- "Cordova" - 라이브러리는 InApp>-<r cordova 플러그인을 사용하여 키cloak 로그인/등록 페이지를 로드하려고 합니다. 라이브러리가 cordova 에코시스템에서 작업할 때 자동으로 사용됩니다.
- "Cordova-native" - 라이브러리는 browserTabs cordova 플러그인을 사용하여 휴대폰의 시스템 브라우저를 사용하여 로그인 및 등록 페이지를 엽니다. 이렇게 하려면 앱에 다시 리디렉션하려면 추가 설정이 필요합니다( 2.2.3절. “Cordova를 사용한 하이브리드 앱”참조).
- "custom" - 사용자 정의 어댑터를 구현할 수 있습니다 (고급 사용 사례 전용)
- responseType
- 로그인 요청과 함께 Red Hat Single Sign-On으로 전송된 응답 유형입니다. 이는 초기화 중에 사용되는 흐름 값에 따라 결정되지만 이 값을 설정하여 재정의할 수 있습니다.
2.2.7.3. 방법 링크 복사링크가 클립보드에 복사되었습니다!
init(options)
어댑터를 초기화하기 위해 호출됩니다.
옵션은 다음과 같은 오브젝트입니다.
-
useNonce - 암호화 nonce를 추가하여 인증 응답이 요청과 일치하는지 확인합니다(기본값은
true). -
Onload - 로드 시 수행할 작업을 지정합니다. 지원되는 값은
login-required또는check-sso입니다. - silentCheckSsoRedirectUri - onLoad가 'check-sso'로 설정된 경우 자동 인증 검사를 위해 리디렉션 배를 설정합니다.
-
silentCheckSsoFallback - 자동
검사-sso가 브라우저에서 지원되지 않는경우(기본값은true임) 일반 검사로 대체됩니다. - token - 토큰의 초기 값을 설정합니다.
- refreshToken - 새로 고침 토큰의 초기 값을 설정합니다.
- idToken - ID 토큰의 초기 값을 설정합니다( token 또는 refreshToken과 함께만).
-
범위 - 기본 범위 매개 변수를 Red Hat Single Sign-On 로그인 엔드포인트로 설정합니다. 공백으로 구분된 범위 목록을 사용합니다. 일반적으로 특정 클라이언트에 정의된 클라이언트 범위를 참조합니다. 범위
openid는 항상 어댑터의 범위 목록에 추가됩니다. 예를 들어 범위 옵션주소 전화번호를 입력하면 Red Hat Single Sign-On에 범위 매개 변수scope=openid 주소 전화가포함됩니다.login()옵션이 범위를 명시적으로 지정하는 경우 여기에 지정된 기본 범위를 덮어씁니다. - timeSkew - 로컬 시간과 Red Hat Single Sign-On 서버 간 스케이크 초기 값을 초 단위로 설정합니다( token 또는 refreshToken과 함께만).
-
checkLoginIframe - 모니터링 로그인 상태를 활성화/비활성화하도록 설정합니다(기본값은
true). - checkLoginIframeInterval - 로그인 상태를 확인하도록 간격을 설정합니다(기본값은 5초).
-
responseMode - 로그인 요청 시 OpenID Connect 응답 모드를 Red Hat Single Sign-On 서버로 전송합니다. 유효한 값은
query또는fragment입니다. 기본값은조각입니다. 즉, 인증에 성공하면 Red Hat Single Sign-On이 URL 조각에 OpenID Connect 매개변수를 추가하여 JavaScript 애플리케이션으로 리디렉션됩니다. 일반적으로 더 안전하고쿼리를통해 권장됩니다. -
flow - OpenID Connect 흐름을 설정합니다. 유효한 값은
표준,암시적또는하이브리드입니다. -
enableLogging - Keycloak에서 콘솔까지 로깅 메시지를 활성화합니다(기본값은
false). pkceMethod - 사용할 Proof Key Code Exchange(PKCE)의 방법입니다. 이 값을 구성하면 PKCE 메커니즘이 활성화됩니다. 사용 가능한 옵션:
- "S256" - SHA256 기반 PKCE 방법
- messageReceiveTimeout - Keycloak 서버의 메시지 응답을 기다리는 동안 시간 초과를 밀리초 단위로 설정합니다. 이는 예를 들어 타사 쿠키 확인 중에 메시지를 기다리는 경우 사용됩니다. 기본값은 10000입니다.
초기화가 완료되면 해결 가능한 명령을 반환합니다.
login(options)
로그인 양식으로 리디렉션합니다.
옵션은 다음과 같은 선택적 오브젝트입니다.
- redirecturi - 로그인 후 리디렉션할 배를 지정합니다.
-
프롬프트 - 이 매개변수를 사용하면 Red Hat Single Sign-On 서버 측의 로그인 흐름을 약간 사용자 지정할 수 있습니다. 예를 들어 로그인 값의 경우 로그인 화면 표시를 강제 적용합니다.
prompt매개변수의 가능한 모든 값과 세부 사항은 Parameters Forwarding 섹션 을 참조하십시오. -
maxAge - 사용자가 이미 인증된 경우에만 사용됩니다. 사용자 인증이 발생한 이후의 최대 시간을 지정합니다. 사용자가 이미
maxAge보다 오랜 시간 동안 인증되면 SSO가 무시되고 다시 인증해야 합니다. - loginHint - 로그인 양식에 사용자 이름/이메일 필드를 미리 채우는 데 사용됩니다.
-
범위 - 이 특정 로그인에 대해 다른 값으로
init에 구성된 범위를 재정의합니다. - idpHint - Red Hat Single Sign-On에 로그인 페이지 표시를 건너뛰고 지정된 ID 공급자로 자동으로 리디렉션하도록 지시하는 데 사용됩니다. ID 공급자 설명서에서 추가 정보 .
-
ACR - 클레임 매개변수 내에 Red Hat Single Sign-On 서버로 전송되는
acr클레임에 대한 정보가 포함되어 있습니다. 일반적인 사용은 단계별 인증을 위한 것입니다. 사용의 예: ["silver", "gold"], essential: true }. 자세한 내용은 OpenID Connect 사양 및 단계별 인증 설명서 를 참조하십시오. -
작업 - 값이
등록되면 사용자가 등록 페이지로 리디렉션됩니다. 값이UPDATE_PASSWORD인 경우 사용자는 재설정 암호 페이지로 리디렉션됩니다(인증되지 않은 경우 사용자를 먼저 로그인 페이지로 이동하고 인증 후 리디렉션), 로그인 페이지로 리디렉션됩니다. - locale - OIDC 1.0 사양의 3.1.2.1 섹션에 따라 'ui_locales' 쿼리 매개 변수를 설정합니다.
-
cordovaOptions - Cordova in-app-browser에 전달되는 인수를 지정합니다(해당되는 경우).
숨겨진옵션과위치는이러한 인수의 영향을 받지 않습니다. 사용 가능한 모든 옵션은 https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-inappbrowser/ 에서 정의됩니다. 사용 예:{ zoom: "no", hardwareback: "yes" };
createLoginUrl(options)
URL을 로그인 양식으로 반환합니다.
옵션은 선택적 오브젝트로 기능 로그인 과 동일한 옵션을 지원합니다.
logout(options)
logout으로 리디렉션됩니다.
옵션은 다음과 같은 오브젝트입니다.
- redirecturi - logout 후 리디렉션할 uri를 지정합니다.
createLogoutUrl(options)
URL을 반환하여 사용자를 로그아웃합니다.
옵션은 다음과 같은 오브젝트입니다.
- redirecturi - logout 후 리디렉션할 uri를 지정합니다.
register(options)
등록 양식으로 리디렉션합니다. 옵션 action = 'register'를 사용하여 로그인 바로 가기
로그인 방법과 관련된 옵션은 동일하지만 '작업'은 'register'로 설정됩니다.
createRegisterUrl(options)
URL을 등록 페이지로 되돌립니다. 옵션 action = 'register'를 사용하여 createLoginUrl의 바로 가기
createLoginUrl 메서드와 옵션이 동일하지만 '작업'은 'register'로 설정됩니다.
accountManagement()
계정 관리 콘솔로 리디렉션합니다.
createAccountUrl(options)
URL을 계정 관리 콘솔로 반환합니다.
옵션은 다음과 같은 오브젝트입니다.
- redirecturi - 다시 애플리케이션으로 리디렉션할 때 리디렉션할 uri를 지정합니다.
hasRealmRole(role)
토큰에 지정된 영역 역할이 있는 경우 true를 반환합니다.
hasResourceRole(role, resource)
리소스에 대해 지정된 역할이 있는 경우 토큰에 true를 반환합니다(지정되지 않은 clientId가 사용되는 경우 리소스는 선택 사항입니다).
loadUserProfile()
사용자 프로필을 로드합니다.
프로필로 해결되는 명령을 반환합니다.
예를 들면 다음과 같습니다.
keycloak.loadUserProfile()
.then(function(profile) {
alert(JSON.stringify(profile, null, " "))
}).catch(function() {
alert('Failed to load user profile');
});
isTokenExpired(minValidity)
토큰이 만료되기 전에 minValidity초보다 적은 경우 true를 반환합니다(지정 0을 사용하지 않는 경우minValidity는 선택 사항입니다).
updateToken(minValidity)
토큰이 minValidity 초 내에 만료되는 경우(마지어 5를 지정하지 않은 경우minValidity는 선택 사항임) 토큰이 새로 고쳐집니다. -1이 minValidity로 전달되면 토큰이 강제로 새로 고쳐집니다. 세션 상태 iframe이 활성화된 경우 세션 상태도 확인됩니다.
토큰이 새로 고쳐졌는지 여부를 나타내는 부울로 해결되는 명령을 반환합니다.
예를 들면 다음과 같습니다.
keycloak.updateToken(5)
.then(function(refreshed) {
if (refreshed) {
alert('Token was successfully refreshed');
} else {
alert('Token is still valid');
}
}).catch(function() {
alert('Failed to refresh the token, or the session has expired');
});
clearToken()
토큰을 포함한 인증 상태 지웁니다. 이는 애플리케이션이 세션을 감지한 경우(예: 토큰 업데이트 실패 시) 유용할 수 있습니다.
이를 호출하면 onAuthLogout 콜백 리스너가 호출됩니다.
2.2.7.4. 콜백 이벤트 링크 복사링크가 클립보드에 복사되었습니다!
어댑터는 특정 이벤트에 대한 콜백 리스너 설정을 지원합니다. init 함수를 호출하기 전에 이러한 값을 설정해야 합니다.
예를 들면 다음과 같습니다.
keycloak.onAuthSuccess = function() { alert('authenticated'); }
사용 가능한 이벤트는 다음과 같습니다.
- onReady(authenticated) - 어댑터가 초기화될 때 호출됩니다.
- OnAuthSuccess - 사용자가 성공적으로 인증될 때 호출됩니다.
- OnAuthError - 인증 중에 오류가 발생한 경우 called.
- OnAuthRefreshSuccess - 토큰을 새로 고칠 때 호출됩니다.
- onAuthRefreshError - 토큰을 새로 고치는 동안 오류가 있는 경우 호출됨.
- onAuthLogout - 사용자가 로그아웃된 경우 호출됨(세션 상태 iframe이 활성화되거나 Cordova 모드에서만 호출됨).
- OnTokenExpired - 액세스 토큰이 만료될 때 호출됩니다. 새로 고침 토큰을 사용할 수 있는 경우 updateToken을 사용하여 토큰을 새로 고치거나 (즉 암시적 흐름이 있는 경우) 로그인 화면으로 리디렉션하여 새 액세스 토큰을 가져올 수 있습니다.