Kerberos in progress (#707)

This commit is contained in:
Xavier Guimard 2017-04-06 20:37:38 +00:00
parent 5210a8edec
commit 537d41a29b
7 changed files with 21 additions and 18 deletions

View File

@ -16,6 +16,8 @@ our $VERSION = '2.0.0';
extends 'Lemonldap::NG::Portal::Auth::Base';
has keytab => ( is => 'rw' );
# INITIALIZATION
sub init {
@ -36,7 +38,7 @@ sub extractFormInfo {
# Case 1: simple usage or first Kerberos Ajax request
# => return 401 to initiate Kerberos
if ( !$self->{conf}->{krbByJs} or $req->param('krb') ) {
if ( !$self->{conf}->{krbByJs} or $req->param('kerberos') ) {
$self->logger->debug('Initialize Kerberos dialog');
# Case 1.1: Ajax request
@ -75,19 +77,19 @@ sub extractFormInfo {
# page with "kerberos=0". Return an error to be able to switch to
# another backend (Combination)
# switch to another backend
elsif ( defined $req->param('krb') ) {
$self->userLogger->warn('Kerberos authentication has failed');
elsif ( defined $req->param('kerberos') ) {
$self->userLogger->warn('Kerberos authentication has failed, back to portal');
return PE_BADCREDENTIALS;
}
# Case 3: Display kerberos auth page (with javascript)
else {
$self->logger->debug('Send Kerberos javascript');
$self->p->setHiddenValue( $req, kerberos => 0, '', 0 );
$self->p->setHiddenFormValue( $req, kerberos => 0, '', 0 );
$req->datas->{customScript} .=
'<script type="text/javascript" src="'
. $self->p->staticPrefix
. 'common/js/kerberos.js"></script>';
. '/common/js/kerberos.js"></script>';
return PE_FIRSTACCESS;
}
}

View File

@ -571,7 +571,7 @@ sub setHiddenFormValue {
$base64 = 1 unless defined $base64;
# Store value
if ($val) {
if ( defined $val ) {
$key = $prefix . $key;
$val =~ s/\+/%2B/g;
$req->{portalHiddenFormValues}->{$key} = $val;

View File

@ -1,18 +1,18 @@
# Launch Kerberos request
$(document).ready ->
$.ajax
$.ajax portal + '?kerberos=1',
dataType: 'json'
# Called if browser can't find Kerberos ticket will display
# PE_BADCREDENTIALS
statusCode:
401: () ->
$('#form').submit()
$('#lform').submit()
# If request succeed, cookie is set, posting form to get redirection
# or menu
success: (data) ->
$('#form').submit()
$('#lform').submit()
# Case else, will display PE_BADCREDENTIALS or fallback to next auth
# backend
error: () ->
$('#form').submit()
$('#lform').submit()

View File

@ -1,18 +1,18 @@
// Generated by CoffeeScript 1.10.0
(function() {
$(document).ready(function() {
return $.ajax({
return $.ajax(portal + '?kerberos=1', {
dataType: 'json',
statusCode: {
401: function() {
return $('#form').submit();
return $('#lform').submit();
}
},
success: function(data) {
return $('#form').submit();
return $('#lform').submit();
},
error: function() {
return $('#form').submit();
return $('#lform').submit();
}
});
});

View File

@ -1 +1 @@
(function(){$(document).ready(function(){return $.ajax({dataType:"json",statusCode:{401:function(){return $("#form").submit()}},success:function(a){return $("#form").submit()},error:function(){return $("#form").submit()}})})}).call(this);
(function(){$(document).ready(function(){return $.ajax(portal+"?kerberos=1",{dataType:"json",statusCode:{401:function(){return $("#lform").submit()}},success:function(a){return $("#lform").submit()},error:function(){return $("#lform").submit()}})})}).call(this);

View File

@ -40,6 +40,7 @@
<link rel="openid2.provider" href="<TMPL_VAR NAME="PROVIDERURI">" />
</TMPL_IF>
<TMPL_INCLUDE NAME="../common/script.tpl">
<TMPL_VAR NAME="CUSTOM_SCRIPT">
<!-- //if:usedebianlibs
<script type="text/javascript" src="<TMPL_VAR NAME="STATIC_PREFIX"><TMPL_VAR NAME="SKIN">/js/skin.min.js"></script>
<script type="text/javascript" src="<TMPL_VAR NAME="STATIC_PREFIX">/common/js/portal.min.js"></script>

View File

@ -46,7 +46,7 @@
<div id="<TMPL_VAR NAME="key">">
<form action="<TMPL_VAR NAME="url">" method="post" class="login <TMPL_VAR NAME="module">">
<form id="form" action="<TMPL_VAR NAME="url">" method="post" class="login <TMPL_VAR NAME="module">">
<!-- Hidden fields -->
<TMPL_VAR NAME="HIDDEN_INPUTS">
@ -102,9 +102,9 @@
<div class="panel panel-default">
<TMPL_IF NAME="module">
<form action="#" method="post" class="login <TMPL_VAR NAME="module">" role="form">
<form id="lform" action="#" method="post" class="login <TMPL_VAR NAME="module">" role="form">
<TMPL_ELSE>
<form action="#" method="post" class="login" role="form">
<form id="lform" action="#" method="post" class="login" role="form">
</TMPL_IF>
<!-- Hidden fields -->
<TMPL_VAR NAME="HIDDEN_INPUTS">