-
Notifications
You must be signed in to change notification settings - Fork 19
Automatic redirect to provider in passport case
Meghna Joshi edited this page Dec 18, 2019
·
1 revision
-
Add provider in
getPageForStep
in your passport interception script -
Add provider in
prepareForStep
in your passport interception script -
Add one page
passportfront.xhtml
which has javascript code to click on the button and redirect you to your provider. Createpassportfront.xhtml
with below content and put it on/opt/gluu-server/opt/gluu/jetty/oxauth/custom/pages
path.
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:h="http://xmlns.jcp.org/jsf/html"
template="/WEB-INF/incl/layout/front-template.xhtml">
<f:metadata>
<f:viewAction action="#{authenticator.prepareAuthenticationForStep}" if="#{not identity.loggedIn}"/>
</f:metadata>
<ui:define name="head">
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
</ui:define>
<ui:define name="pageTitle">icrypto Login</ui:define>
<ui:define name="body">
<div class="row">
<div class="col-xs-12 col-md-6">
<div>
<div>
<h:form id="loginForm">
<h:panelGroup rendered="#{not identity.loggedIn}">
<p class="text-danger errormsg" style="display: none"></p>
<h:inputHidden id="provider"/>
<div class="row form-group" style="display: none">
<h:messages class="text-danger"/>
<span class="input-name col-md-3"> <h:outputLabel
for="username" value="#{msgs['login.username']}"/>
</span>
<div class="col-md-6">
<h:inputText id="username" value="#{credentials.username}"
autocomplete="off" class="form-control usernameField"/>
</div>
</div>
<div class="row form-group" style="display: none">
<span class="input-name col-md-3"> <h:outputLabel
for="password" value="#{msgs['login.password']}"/>
</span>
<div class="col-md-6">
<h:inputSecret id="password" value="#{credentials.password}"
autocomplete="off" class="form-control passwordField"/>
</div>
</div>
<div class="row form-group" style="display: none">
<h:outputLabel styleClass="col-sm-3 control-label"
for="rememberme" value="#{msgs['login.rememberMe']}"/>
<div class="col-sm-6">
<input type="checkbox" value="rememberme" id="rememberme"
class="rememberField"/>
</div>
</div>
<div class="row form-group" style="display: none">
<div id="submit_block" class="col-md-offset-3 col-md-3">
<h:commandButton id="loginButton"
value="#{msgs['login.login']}" onclick="checkRememberMe();"
action="#{authenticator.authenticate}"
class="btn btn-login"/>
</div>
</div>
<div class="row" style="display: none">
<div class="col-md-offset-3 col-md-6">
<a href="/identity/person/passwordReminder.htm">#{msgs['passport.forgotYourPassword']}</a>
</div>
</div>
<h:panelGroup rendered='#{!empty client.getPolicyUri()}'>
<p>
<h:outputText value="#{msgs['common.agreePolicy']}"/>
<a target="_blank" href='#{client.getPolicyUri()}'>
<h:outputText
value="#{msgs['common.privacyPolicy']}"/>
</a>
</p>
</h:panelGroup>
<h:panelGroup rendered='#{!empty client.getTosUri()}'>
<p>
<h:outputText value="#{msgs['common.pleaseReadTheTos']}"/>
<a target="_blank" href='#{client.getTosUri()}'>
<h:outputText
value="#{msgs['common.termsOfService']}"/>
</a>
</p>
</h:panelGroup>
<h:panelGroup
rendered="#{external_auth_request_uri != Null or external_registration_uri != Null}">
<li class="row-fluid submit-container">
<div class="gradient contact-button green span2 offset3"
style="width: 320px;">
<h:panelGroup
rendered="#{external_auth_request_uri != Null}">
<a id="externalAuthButton"
href="#{external_auth_request_uri}"> <input
type="button"
value="#{msgs['passport.useExternalAuthentication']}"/>
</a>
</h:panelGroup>
<h:panelGroup
rendered="#{external_registration_uri != Null}">
<a id="externalRegistrationButton"
href="#{external_registration_uri}"> <input
type="button" style="width: 220px;"
value="#{msgs['passport.registerNewUser']}"/>
</a>
</h:panelGroup>
</div>
</li>
</h:panelGroup>
</h:panelGroup>
</h:form>
</div>
</div>
</div>
<div class="col-xs-12 col-md-6" style="display: none">
<div visibility="hidden" id="provider_panel">
<div class="panel panel-default panel-order">
<div class="panel-heading">External Providers</div>
<div class="panel-body" id="add_here">
<div id="signinButton"></div>
</div>
</div>
</div>
</div>
</div>
<form id="providerForm" method="post">
<input type="hidden" id="Hidden_ProviderType" name="Hidden_ProviderType"
value="#{identity.getWorkingParameter('provider_type')}"/>
<input type="hidden" id="Hidden_Provider" name="Hidden_Provider"
value="#{identity.getWorkingParameter('provider')}"/>
</form>
<script type="text/javascript">
//<![CDATA[
var helper = (function () {
var provider = $("#Hidden_Provider").val();
//alert(provider);
if (typeof (provider) != "undefined" && provider != null && provider != "") {
idp_redirect(provider);
}
})();
function idp_redirect(provider) {
var form = document.forms.loginForm;
form["loginForm:provider"].value = provider;
form["loginForm:loginButton"].click();
}
//]]>
</script>
</ui:define>
</ui:composition>