<html xmlns:v="urn:schemas-microsoft-com:vml" 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=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@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:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 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:#0563C1;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">As part of our review of the spec authors’ pull requests, Adam Hampton and I have started a Java library to model all the objects in the SSE, CAEP, and RISC profiles. The test suite takes verbatim copies of the example JSON representations
from the respective documents as one form of input, and the code (Builder-style) generates equivalent objects. It’s up-to-date with the changes made this week to the Security Identifiers spec by Annabelle, and the three PRs by Tim and Atul which are currently
outstanding, to the extent possible.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">We have a separate project under way to build transmitters and receivers which we hope to have out in the next few weeks, which leverages this library.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Library: <a href="https://github.com/sailpoint-oss/openid-sse-model">
https://github.com/sailpoint-oss/openid-sse-model</a><o:p></o:p></p>
<p class="MsoNormal">Usage:<br>
<br>
<o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> SubjectIdentifier session = new SubjectIdentifier.Builder()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .format(IdentifierFormats.OPAQUE)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .subject("dMTlD|1600802906337.16|16008.16")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .build();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> SubjectIdentifier user = new SubjectIdentifier.Builder()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .format(IdentifierFormats.ISSUER_SUBJECT)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .issuer(<a href="https://idp.example.com/123456789/">https://idp.example.com/123456789/</a>)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .subject("dMTlD|1600802906337.16|16008.16")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .build();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> SubjectIdentifier tenant = new SubjectIdentifier.Builder()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .format(IdentifierFormats.OPAQUE)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .id("123456789")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .build();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> SubjectIdentifier subj = new SubjectIdentifier.Builder()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .session(session)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .user(user)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .tenant(tenant)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .build();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> CAEPSessionRevoked evt = new CAEPSessionRevoked.Builder()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .initiatingEntity(CAEPInitiatingEntity.POLICY)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .reasonAdmin("Landspeed Policy Violation: C076E82F")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .reasonUser("Access attempt from multiple regions.")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .eventTimestamp(System.currentTimeMillis())<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .subject(subj)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .build();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> evt.validate();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> JWTClaimsSet set = new JWTClaimsSet.Builder()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .issuer(<a href="https://idp.example.com/123456789/">https://idp.example.com/123456789/</a>)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .jwtID("24c63fb56e5a2d77a6b512616ca9fa24")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .issueTime(DateUtils.fromSecondsSinceEpoch(System.currentTimeMillis()/1000))<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .audience(<a href="https://sp.example.com/caep">https://sp.example.com/caep</a>)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .claim(SEToken.EVENTS_CLAIM, evt)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:#24292E;border:none windowtext 1.0pt;padding:0in"> .build();</span><span style="font-size:10.0pt;font-family:Consolas;color:#24292E"><o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Feedback welcome.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
<p class="MsoNormal">Matt<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<div>
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Arial",sans-serif">Matt Domsch</span></b><span style="font-family:"Arial",sans-serif"><br>
</span><i><span style="font-size:9.0pt;font-family:"Arial",sans-serif">VP, Engineering Fellow</span></i><span style="font-size:9.0pt;font-family:"Arial",sans-serif"><br>
<span style="color:#00B5E2"><a href="mailto:matt.domsch@sailpoint.com"><span style="color:#00B5E2">matt.domsch@sailpoint.com</span></a><o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:black">mobile: 512-981-6486</span><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:#00B5E2">
</span><span style="font-family:"Arial",sans-serif"><br>
</span><b><span style="font-size:8.0pt;font-family:"Arial",sans-serif;color:#00B5E2"><a href="http://www.sailpoint.com/"><span style="color:#00B5E2">www.sailpoint.com</span></a></span></b><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>