<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Helvetica;
panose-1:0 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:"Times New Roman \(Body CS\)";
panose-1:2 2 6 3 5 4 5 2 3 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
span.EmailStyle18
{mso-style-type:personal-reply;
font-family:Helvetica;
color:windowtext;
font-weight:normal;
font-style:normal;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-family:Helvetica">Use the asBoolean attribute on the OIDCString encoder.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Helvetica"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:Helvetica"><AttributeEncoder xsi:type="oidcext:OIDCString" asBoolean="true" name="email_verified" /><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Helvetica"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:Helvetica"><o:p> </o:p></span></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12.0pt;color:black">From: </span></b><span style="font-size:12.0pt;color:black">users <users-bounces@shibboleth.net> on behalf of Liam Hoekenga <liamr@umich.edu><br>
<b>Reply-To: </b>Shib Users <users@shibboleth.net><br>
<b>Date: </b>Thursday, July 23, 2020 at 19:38<br>
<b>To: </b>Shib Users <users@shibboleth.net><br>
<b>Subject: </b>boolean OIDC claims<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Much of what I've done in our OIDC deployment has been guided by a REFEDS white paper,
<a href="https://wiki.refeds.org/download/attachments/38895621/20181011-OIDC-WP.pdf">
"White Paper for implementation ofmappings between SAML 2.0 and OpenIDConnect in Research and Education"</a><o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">In reference to the "email_verified" claim, it says...<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> As in such case it may be assumed the email service being used is<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> under direct administrative control of the Institution, and the requirements<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> for setting email_verified to "True" have been fulfilled.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I decided I'd send email_verified as part of the "email" scope. The problem is,
<a href="https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims">the spec</a> says, the value for email_verified (and phone_number_verified) are booleans, not strings. (I imagine you'd have a similar problem if you wanted to send updated_at,
which is a number, not a string).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Acc'd to the <a href="https://github.com/CSCfi/shibboleth-idp-oidc-extension/wiki/AttributeEncoderPluginConfiguration#attributeencoder-plugin-types">
wiki for the OIDC plugin</a>, there are three encoder types..<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">- string<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">- scoped string<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">- binary<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I'm guessing with that in mind, we can't actually publish email_verified, phone_number_verified, or updated_at keeping in line with the spec?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Liam<o:p></o:p></p>
</div>
</div>
</div>
</body>
</html>