Important Update Effective February 1, 2024!
Due to recent changes in Jira and Confluence, we've made the tough decision to discontinue the OpenID Connect (OIDC)/OAuth app and no longer provide new versions for the newest Jira/Confluence releases as of January 31, 2024.
This is due to some necessary components no longer shipping with Jira/Confluence, which would require some extensive rewrites of the OIDC App.
Important Update! This app will be discontinued soon!
Due to recent changes in Jira, which no longer ships with some components required for our Read Receipts app to run, we've made the tough decision to discontinue the app, as of Februar 5, 2025.
Important Update! This app will be discontinued soon!
We've made the tough business decision to discontinue the app, as of January 11, 2025.
IdP Selection Page Examples
On this page, we'll add some more examples of how to customize the IdP Selection Page Template in the app's Page Template section.
Page templates are using Velocity (http://velocity.apache.org/) and support HTML, CSS, JS, and images.
Images can only be embedded directly, as Base64 blobs. You can convert them here: https://www.base64-image.de/
Jira (IdP Buttons)
This is for Jira only, looks like the normal login page with IdPs added as Buttons
<html>
<head>
<title>Select Identity Provider</title>
$webResourceManager.requireResource("$pluginproperties.pluginkey:resources")
<meta name="decorator" content="atl.general">
</head>
<body class="aui-layout aui-theme-default page-type-message">
<section id="content" role="main">
<div class="aui-page-panel">
<div class="aui-page-panel-inner">
<section class="aui-page-panel-content">
<header class="aui-page-header">
<div class="aui-page-header-inner">
<div class="aui-page-header-main">
<h1>Welcome to Jira</h1>
</div>
</div>
</header>
<form action="/login.jsp" class="aui" id="login-form" method="post">
<div class="form-body">
<div class="aui-group jira-login-method">
<div class="aui-item jira-login-item">
<div class="field-group">
<label accesskey="u" for="login-form-username"><u>U</u>sername</label>
<input class="text medium-field" id="login-form-username" name="os_username"
type="text" value="">
</div>
<div class="field-group">
<label accesskey="p" for="login-form-password" id="passwordlabel"><u>P</u>assword</label>
<input id="login-form-password" class="text medium-field" name="os_password"
type="password">
</div>
<fieldset class="group ">
<div class="checkbox" resolved="">
<input class="checkbox" id="login-form-remember-me" name="os_cookie"
type="checkbox" value="true" resolved=""><span
class="aui-form-glyph"></span>
<label for="login-form-remember-me" accesskey="r"><u>R</u>emember my
login on this computer</label>
</div>
</fieldset>
<!-- // .group -->
<div id="sign-up-hint" class="field-group">
Not a member? To request an account, please contact your Jira
administrators.
</div>
</div>
</div>
<div class="hidden">
<input name="os_destination" id="redirect_to" type="hidden" >
<script>
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
if (urlParams.has('redirectTo')){
document.getElementById('redirect_to').value = urlParams.get('redirectTo');
}
</script>
</div>
<div class="hidden">
<input name="user_role" type="hidden">
</div>
<div class="hidden">
<input name="atl_token" type="hidden">
</div>
</div>
<div class="buttons-container form-footer">
<div class="buttons">
<input accesskey="s" class="aui-button aui-button-primary" id="login-form-submit"
name="login" title="Press Ctrl+Alt+s to submit this form" type="submit"
value="Log In" resolved="">
<a accesskey="`" class="aui-button aui-button-link cancel"
href="/secure/ForgotLoginDetails.jspa" id="login-form-cancel"
title="Press Ctrl+Alt+` to cancel" resolved="">Can't access your account?</a>
</div>
</div>
</form>
</div>
<div class="buttons-container form-footer">
<div class="buttons" align="center">
#foreach($idp in $idps)
<button title="Click to login with $idp.name" class="aui-button"
onclick="window.location.href = '$idp.ssoUrl';">Login with $idp.name
</button>
#end
</div>
<p> </p>
</div>
</form>
<!-- // .aui #login-form -->
</section>
<!-- .aui-page-panel-content -->
</div>
<!-- .aui-page-panel-inner -->
</div>
<!-- .aui-page-panel -->
</section>
</div>
</div>
</section>
</body>
</html>
Template with embedded Images and CSS/ JS
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Your page title</title>
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<style type="text/css">
body {
background-image: url('data:image/png;base64,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');
background-repeat: repeat;
}
* {
font-family: 'Blue Sky Standard', sans-serif;
}
.content-container {
/*margin-top: 120px;*/
top: 30%;
position: absolute;
background-color: transparent !important;
color: #fff;
}
.heading {
font-size: 25px;
font-weight: lighter;
}
.select-box {
margin-top: 10px;
max-width: 650px;
padding: 0;
color: #fff;
background: rgba(256, 256, 256, 0.2);
border-radius: 4px;
font-weight: lighter;
}
.select-box > .inner-select:first-child {
border-bottom: 1px solid #000;
}
.inner-select {
padding: 30px;
transition: 0.5s all;
color: #fff;
}
.select-type {
margin-bottom: 0;
font-size: 15px;
}
.click {
font-size: 10px;
}
.tab {
padding: 0;
}
.inner-select:hover {
cursor: pointer;
background: rgba(256, 256, 256, 0.9);
transition: 0.5s all;
color: black;
font-weight: normal;
}
.desc-container {
padding: 0;
max-width: 500px;
}
.description {
font-size: smaller;
font-weight: lighter;
}
.logo {
width: 75px;
}
.logo-container {
padding: 20px;
}
.arrow {
padding: 7px 0;
}
.click-arrow {
font-size: 25px;
}
</style>
</head>
<body>
<div class="container-fluid">
<div class="logo-container">
<img src="data:image/png;base64,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" class="logo">
</div>
<div class="content-container col-sm-4 col-sm-offset-4">
<h1 class="heading">Your heading</h1>
#if($idpSelected)
<p>Select or wait 3 seconds to use $selectedName <span class="aui-icon aui-icon-wait"></span></p>
<script>
var timeout = setTimeout("location.href = '$selectedUrl';", 3000);
window.onclick= function () { clearTimeout(timeout); }
</script>
#end
<div class="select-box col-xs-12">
#foreach($idp in $idps)
<a class="inner-select col-xs-12" href="$idp.ssoUrl">
<div class="tab col-xs-11">
<span class="select-type">$idp.name</span><br/>
<span class="click">CLICK HERE</span>
</div>
<div class="arrow col-xs-1 pull-right">
<i class="fa fa-angle-right click-arrow"></i>
</div>
</a>
#end
</div>
<div class="select-box col-xs-12">
<a class="inner-select col-xs-12" href="/login.jsp?nosso">
<div class="tab col-xs-11">
<span class="select-type">Login with local password</span><br/>
<span class="click">CLICK HERE</span>
</div>
<div class="arrow col-xs-1 pull-right">
<i class="fa fa-angle-right click-arrow"></i>
</div>
</a>
</div> <div class="desc-container col-xs-12">
<h1 class="heading">Status</h1>
<span class="description">More text to be displayed here</span>
</div>
</div>
</div>
</body>
</html>
Change the decorator
Atlassian's applications support standard page decorators, allowing our plugin to generate new web pages with consistent decoration by the host application across the Atlassian products.
Default we are using the 'atl.general' decorator in our page templates. The general decorator can be used for the header and footer of general pages outside the administration UI.
atl.general decorator
If you want to remove the header and footer from the page, you need to change the decorator type. We will use the 'atl.popup' decorator for content that can be placed in a new browser popup window.
Just change the decorator type to hide the header and footer.
In the “IdP Selection Page Template”, replace the line:
<meta name="decorator" content="atl.general">
to
<meta name="decorator" content="atl.popup">
Look & Feel
general decorator
popup decorator
Click-thru Terms & Conditions Sign-up
Would it be possible to provide some kind of "Click-thru" agreement to a user which requires that they sign up to the terms of the site before getting general access?
For this scenario, we use the 'IdP Selection Page Template' (SAML Single Sign-On Plugin Configuration → Page Templates) and modify the default IdP Selection Page Template.
When a user now accesses Jira/Confluence for the first time, this page is displayed to him. By clicking "Okay", he will then be redirected to the first configured Identity Provider.
In doing so, we set a cookie that stores this. If the page is now visited a second time, it will be redirected directly to the Identity Provider as long as the cookie is still set.
So this means that each of your users will see this banner once (if the cookie is lost, the page is displayed again).
Below you will find the template, please use it in the Page Templates (IdP Selection Page) section. You can easily customize the text or button text to your needs, as well as the color via CSS.
<html>
<head>
<title>Terms of Service</title>
$webResourceManager.requireResource("$pluginproperties.pluginkey:resources")
<meta name="decorator" content="atl.general">
</head>
<body class="aui-layout aui-theme-default page-type-message">
<style>
.alert {
padding: 20px;
background-color: #0000ff;
color: white;
}
.closebtn {
margin-left: 15px;
color: white;
font-weight: bold;
float: right;
font-size: 22px;
line-height: 20px;
cursor: pointer;
transition: 0.3s;
}
.closebtn:hover {
color: black;
}
</style>
<div class="alert" id="message">
Your data will be processed for things. You will see this message only once. Click 'Okay' to acknowledge and proceed.<br></br>
<button onclick="function myFunction() {
window.location.href = '$idps.get(0).ssoUrl'
}
myFunction()"
type="button">
Okay
</button>
#if($idpSelected)
<script>
document.getElementById("message").style.display = "none";
window.location.href = '$idps.get(0).ssoUrl'
</script>
#end
</div>
</body>
</html>
Multi-language IdP Selection Page
Would it be possible to have a multi-language version of the 'IdP Selection Page Template' (SAML Single Sign On Plugin Configuration → Page Templates)?
We currently don't have an option in the UI to support multi-language templates. However, you can use JavaScript inside the IdP Selection templates to achieve your goal.
Below you will find an example based on our default page template. Our example contains the languages German (de) and French (fr), however you can change or add the languages to your needs.
Multilanguage Template
<html>
<head>
<title>Select Identity Provider</title>
$webResourceManager.requireResource("com.atlassian.auiplugin:aui-spinner")
$webResourceManager.requireResource("$pluginproperties.pluginkey:resources")
<meta name="decorator" content="atl.general">
</head>
<body class="aui-layout aui-theme-default page-type-message" >
<section id="content" role="main">
<div class="aui-page-panel"><div class="aui-page-panel-inner">
<section class="aui-page-panel-content">
<div style="display: flex; justify-content: center;" id="initial-load-spinner">
<aui-spinner size="large"></aui-spinner>
</div>
<div class="form-body" style="display: none;" id="form-body">
<h1 data-translate="title">Select your Identity Provider</h1>
#if($idpSelected)
<p><span data-translate="wait">Select or wait 3 seconds to use $selectedName</span> <span class="aui-icon aui-icon-wait"></span></p>
<script>
var timeout = setTimeout("location.href = '$selectedUrl';", 3000);
window.onclick= function () { clearTimeout(timeout); }
</script>
#end
#foreach($idp in $idps)
<p>
<a href="$idp.ssoUrl" data-translate="$idp.name">$idp.name</a> $idp.description
</p>
#end
#if($loginurl) <p>
<a href="$loginurl" data-translate="nosso">Login with username and password</a>
</p>
#end
</div>
</section>
</div>
</div>
</section>
<script>
AJS.toInit(function() {
// TRANSLATION SETTINGS
// The key to this template is that elements above whose text is supposed to be translated all have this data-translate attribute, where they get a translation key
// The following map contains mappings from languages to translation keys to the actual translations.
// Add your translations here. The keys ('de', 'fr') can be either locales ('de-DE', 'de-AT') or languages ('de', 'fr'). When in doubt, just use the language it's going to be used as a fallback
var translations = {
de: {
title: "Wählen Sie Ihren Identity Provider",
wait: "Wählen Sie einen Identity Provider aus oder warten Sie 3 Sekunden um $selectedName zu benutzen",
nosso: "Login mit Benutzername und Passwort",
// IdP names are allowed as well
// If they contain non-alphanumeric characters, you'll have to write the name in "quotes"
// the keys are case-sensitive!!!
"Your IdP name": "Ihr IdP-Name"
},
fr: { // This translation has been generously provided by Google Translate, I would not trust it, but it's here as an example.
title: "Choisissez votre fournisseur d'identité",
wait: "Sélectionnez un fournisseur d'identité ou attendez 3 secondes pour utiliser $selectedName",
nosso: "Connectez-vous avec nom d'utilisateur et mot de passe",
"Your IdP name": "Votre nom IdP"
}
};
// This is supposed to be the language present in the fields that are given above
var defaultLanguage = "en";
// TRANSLATION CODE
// This is where the magic happens. Ideally, you shouldn't need to touch the code after this.
// Detect user language with fallbacks for different levels of old browsers
// This will be ordered from most preferred to least preferred
var userLanguages = navigator.languages || [navigator.language] || [navigator.userLanguage] || [];
// ensure default language can also match.
translations[defaultLanguage] = {};
var matchedLanguage = null;
// Check if one the user's preferred languages is available
userLanguages.forEach(function (languageString) {
if (matchedLanguage === null && languageString in translations) {
matchedLanguage = languageString
}
});
// if no match was found, try converting the locale strings into language strings and see if that helps
if (matchedLanguage === null) {
userLanguages.forEach(function (languageString) {
try {
var splitLanguageString = languageString.split('-')[0];
if (matchedLanguage === null && typeof splitLanguageString === 'string' && splitLanguageString in translations) {
matchedLanguage = splitLanguageString;
}
} catch (e) {
console.warn("Error preparing user language");
}
});
}
// if any (non-default language) match was found, we set the translated strings in the UI
if (matchedLanguage !== null && matchedLanguage !== defaultLanguage) {
var translationsToUse = translations[matchedLanguage];
AJS.$('[data-translate]').each(function() {
var elem = AJS.$(this);
var translationToUse = translationsToUse[elem.attr('data-translate')];
if (!translationToUse) {
console.warn("Did not find a", matchedLanguage, "translation for", elem.attr('data-translate'));
return;
}
elem.text(translationToUse);
})
}
// and now display the UI
AJS.$("#initial-load-spinner").hide();
AJS.$("#form-body").show();
})
</script>
</body>
</html>
A little more background/explanation
The script basically extends every element with text in it to have an attribute (data-translate) that contains a “translation key”, while the text is kept as the default language. After loading the page, it executes a JavaScript block. This contains the translations you want to have for each language and the translation key (you can modify this according to the example and your need). Afterwards, there’s code that detects the user’s preferred language and does the substitution if necessary.
IdP Selection By Email Page with a Button
Applying the following template to the "IdP Selection By Email Page Template" would add a button that only upon clicking would trigger redirection.
IdP Selection by Email with a Button
#disable_html_escaping()
<html>
<head>
<title>Enter your Email Address</title>
$webResourceManager.requireResource("$pluginproperties.pluginkey:resources")
<meta name="decorator" content="atl.general">
<script type="text/javascript">
var emailDomains = $emailDomainMap;
var ssoURL = "$ssourl";
AJS.toInit(function () {
// Hide these items
jQuery('#notFound').hide();
jQuery('#redirecting').hide();
// The form is never submitted
jQuery("#emailAddressForm").submit(function (e) {
checkEmailField();
e.preventDefault();
});
});
function checkEmailField() {
jQuery('#notFound').hide();
jQuery('#redirecting').hide();
// The input must have an @ and a . behind it to be ready to be checked
var addressPattern = new RegExp(".*@.*\\...+");
var enteredEmail = jQuery("#emailAddressField").val();
if (!addressPattern.test(enteredEmail)) {
return;
}
var atPosition = enteredEmail.indexOf('@');
if (atPosition < 0) {
return;
}
var emailDomain = enteredEmail.substring(atPosition + 1).toLowerCase();
if (!emailDomain) {
return;
}
var restEndpointUrl = emailDomains.__emailDomainCheck;
jQuery.ajax({
url: restEndpointUrl + emailDomain,
dataType: "json",
success: function (data) {
console.log("Successfully retrieved IdP for given email domain", data);
var idpId = data.idpId;
if (idpId !== 0) {
jQuery('#notFound').hide();
jQuery('#redirecting').show();
jQuery('#emailAddressField').prop('disabled', true);
redirectUrl = ssoURL.replace('IDPID', idpId);
// This avoids a warning message when starting the redirect
window.onbeforeunload = function () {
};
window.location = redirectUrl;
} else {
jQuery('#notFound').show();
}
},
error: function (xhr, errorText, err) {
console.error("Error checking email domain: " + errorText, err);
jQuery('#notFound').show();
}
});
}
</script>
</head>
<body class="aui-layout aui-theme-default page-type-message">
<section id="content" role="main">
<div class="aui-page-panel">
<div class="aui-page-panel-inner">
<section class="aui-page-panel-content">
<h1>Single Sign On</h1>
<form class="aui top-label" id="emailAddressForm" >
<div class="field-group">
<label for="emailAddressField">Enter your email address</label>
<input type="text" class="text" id="emailAddressField" name="emailAddressField">
<input type="submit" class="aui-button aui-button-primary" value="Do SSO">
<div class="description">
<div id="notFound" >No SSO destination found for this address</div>
<div id="redirecting"><span class="aui-icon aui-icon-wait"></span>Redirecting...</div>
</div>
</div>
#if($loginurl)
<p><a href="$loginurl">Login with username and password</a></p>
#end
</form>
</section>
</div>
</div>
</section>
</body>
</html>
IdP Selection page only at the first login
From version 6.3.0 of the plugin, it is also possible to provide users the choice of whether they want to see the IdP selection page again or if they only want to pick their IdP ones. So far the user's choice was already stored in a cookie but the IdP selection was always displayed for 3 seconds (a default value that can be amended) until the previous IdP was automatically selected. This gives the user the choice to switch the IdP within that timeframe.
Please note, the option described below will only work if you set the timeout variable (setTimeout) to 0 instead of 3000.
Now in this example, when the "Do you want to save your selection?" is selected the IdP selection page will not be shown the next time a user logs in. This is especially useful in an environment where the majority of users only use one IdP and you have some users that need to switch the IdPs for logging into the application.
The IdPs can be displayed in a meatball or drop-down menu, or as a list. Our template below contains all options (meatball, drop-down menu, or as a list). Every option is marked with a comment. Please modify the template if you only want to display the IdPs with one option.
IdP Selection page only at the first login
<html>
<head>
<title>Select Identity Provider</title>
$webResourceManager.requireResource("$pluginproperties.pluginkey:resources")
<meta name="decorator" content="atl.general">
</head>
<body class="aui-layout aui-theme-default page-type-message" >
<section id="content" role="main">
<div class="aui-page-panel"><div class="aui-page-panel-inner">
<section class="aui-page-panel-content">
<div class="form-body">
<h1>Select your Identity Provider</h1>
#if($idpSelected)
<!-- Change the value setTimeout 3000 to 0, otherwise the IdP selection page will be shown every time -->
<p>Select or wait 3 seconds to use $selectedName <span class="aui-icon aui-icon-wait"></span></p>
<script>
var timeout = setTimeout("location.href = '$selectedUrl';", 3000);
window.onclick= function () { clearTimeout(timeout); }
</script>
#end
<!-- This is the meatball option -->
<form action="/plugins/servlet/samlsso" method="get" >
<label for="idp">Choose an Idp:</label>
<fieldset id="idp">
#foreach($idp in $idps)
<input type="radio" value="$idp.idpId" name="idp" id="$idp.idpId">
<label for="$idp.idpId">$idp.name $idp.description</label>
<br>
#end
</fieldset>
<!-- This is the drop-down menu option -->
<select name="idp">
#foreach($idp in $idps)
<option value="$idp.idpId">$idp.name $idp.description</option>
#end
</select>
<input type="hidden" name="tracker" value="$trackerId">
<input type="hidden" name="redirectTo" value="$redirectTo">
<br><br>
<input type="hidden" name="saveIdpSelection" value="false">
<input type="checkbox" name="saveIdpSelection" id="saveIdpCookie" value="true" checked>
<label for="saveIdpCookie">Do you want to save your selection?</label>
<br><br>
<input type="submit" value="Go">
</form>
<!-- This is the list option -->
#foreach($idp in $idps)
<p>
<a href="$idp.ssoUrl">$idp.name</a> $idp.description
</p>
#end
#if($loginurl) <p>
<a href="$loginurl">Login with username and password</a>
</p>
#end
</div>
</section>
</div>
</div>
</section>
</body>
</html>