<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
        <base href="https://shibboleth.atlassian.net">
        <title>Message Title</title>
    </head>
    <body class="jira" style="color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 1.429">
        <table id="background-table" cellpadding="0" cellspacing="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; background-color: #f5f5f5; border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0" bgcolor="#f5f5f5"><!-- header here -->
            <tbody>
                <tr>
                    <td id="header-pattern-container" style="padding: 0; border-collapse: collapse; padding: 10px 20px">
                        <table id="header-pattern" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
                            <tbody>
                              <tr>
                              <td id="header-avatar-image-container" valign="top" style="padding: 0; border-collapse: collapse; vertical-align: top; width: 32px; padding-right: 8px" width="32"><img id="header-avatar-image" class="image_fix" src="https://secure.gravatar.com/avatar/d5eb999af04e0930ec6738adcd7f57db?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FPS-0.png" height="32" width="32" border="0" style="border-radius: 3px; vertical-align: top"></td>
                              <td id="header-text-container" valign="middle" style="padding: 0; border-collapse: collapse; vertical-align: middle; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px"><a class="user-hover" rel="5afecdc1eb3ffa0c596652c4" style="color:#3b73af;; color: #3b73af; text-decoration: none" id="email_5afecdc1eb3ffa0c596652c4" href="https://shibboleth.atlassian.net/secure/ViewProfile.jspa?accountId=5afecdc1eb3ffa0c596652c4"> Philip Smart </a><strong>commented</strong> on <a href="https://shibboleth.atlassian.net/browse/JCOMOIDC-45?atlOrigin=eyJpIjoiZjRlMDZlMzg0YzVhNDc3ZWIxNThjODNkNjI5NmRmNjgiLCJwIjoiaiJ9" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-avatar-12db0438-df30-4f3d-9f0f-564b632eed66" height="16" width="16" border="0" align="absmiddle" alt="Task"> JCOMOIDC-45</a></td>
                              </tr>
                            </tbody>
                        </table></td>
                </tr>
                <tr>
                    <td id="email-content-container" style="padding: 0; border-collapse: collapse; padding: 0 20px">
                        <table id="email-content-table" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; border-spacing: 0; border-collapse: separate">
                            <tbody>
                              <tr><!-- there needs to be content in the cell for it to render in some clients -->
                              <td class="email-content-rounded-top mobile-expand" style="padding: 0; border-collapse: collapse; color: #ffffff; padding: 0 15px 0 16px; height: 15px; background-color: #ffffff; border-left: 1px solid #cccccc; border-top: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom: 0; border-top-right-radius: 5px; border-top-left-radius: 5px; height: 10px; line-height: 10px; padding: 0 15px 0 16px; mso-line-height-rule: exactly" height="10" bgcolor="#ffffff"> </td>
                              </tr>
                              <tr>
                              <td class="email-content-main mobile-expand " style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff" bgcolor="#ffffff">
                              <table class="page-title-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
                              <tbody>
                              <tr>
                              <td style="vertical-align: top;; padding: 0; border-collapse: collapse; padding-right: 5px; font-size: 20px; line-height: 30px; mso-line-height-rule: exactly" class="page-title-pattern-header-container"><span class="page-title-pattern-header" style="font-family: Arial, sans-serif; padding: 0; font-size: 20px; line-height: 30px; mso-text-raise: 2px; mso-line-height-rule: exactly; vertical-align: middle"> <a href="https://shibboleth.atlassian.net/browse/JCOMOIDC-45?atlOrigin=eyJpIjoiZjRlMDZlMzg0YzVhNDc3ZWIxNThjODNkNjI5NmRmNjgiLCJwIjoiaiJ9" style="color: #3b73af; text-decoration: none">Re: Add a Decrypter for JWE tokens similar to the opensaml Decrypter</a> </span></td>
                              </tr>
                              </tbody>
                              </table></td>
                              </tr>
                              <tr>
                              <td id="text-paragraph-pattern-top" class="email-content-main mobile-expand  comment-top-pattern" style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff; border-bottom: none; padding-bottom: 0" bgcolor="#ffffff">
                              <table class="text-paragraph-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 2px">
                              <tbody>
                              <tr>
                              <td class="text-paragraph-pattern-container mobile-resize-text " style="padding: 0; border-collapse: collapse; padding: 0 0 10px"><p style="margin: 10px 0 0; margin-top: 0">Many thanks for the detailed comments, <a href="https://shibboleth.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3A97de0981-adc3-4044-95ed-131622fad81e" class="user-hover" rel="557058:97de0981-adc3-4044-95ed-131622fad81e" data-account-id="557058:97de0981-adc3-4044-95ed-131622fad81e" accountid="557058:97de0981-adc3-4044-95ed-131622fad81e" style="color: #3b73af; text-decoration: none">Brent Putman</a>, they are very useful. Here are some replies, although in short, I agree with what you suggest and will look to build improvements to the credential resolvers.</p>
                              <blockquote style="margin: 10px 0 0; border-left: 1px solid #cccccc; color: #707070; margin-left: 19px; padding: 10px 20px">
                              <p style="margin: 10px 0 0; margin-top: 0">The only criteria passed in is the usage type (and I guess additional criteria that can be carried in the params?).</p>
                              </blockquote><p style="margin: 10px 0 0">Yes, I use a criterion to pass in the direct encryption key/secret as that comes from the client_secret on the profile config at runtime. There is a simple resolver that pulls that out.</p>
                              <blockquote style="margin: 10px 0 0; border-left: 1px solid #cccccc; color: #707070; margin-left: 19px; padding: 10px 20px">
                              <p style="margin: 10px 0 0; margin-top: 0">So the only way the cred resolvers can work is by just returning all the ones it knows about and you loop over them until one works.</p>
                              </blockquote><p style="margin: 10px 0 0">Yes, you are right. Currently, that is all they are doing. There is logic in the Decrypter to match the JOSE Header ‘alg’ (Algorithm) and ‘enc’ parameters from the JWT to the resolved credentials one by one. But as you suggest, that should be passed into the resolvers and they can filter those out.</p>
                              <blockquote style="margin: 10px 0 0; border-left: 1px solid #cccccc; color: #707070; margin-left: 19px; padding: 10px 20px">
                              <p style="margin: 10px 0 0; margin-top: 0">But I’m not sure what happens if you just try the key agreement with an incorrect private key</p>
                              </blockquote><p style="margin: 10px 0 0">Neither do I, I am not sure of the extent of what Nimbus catch/report - they suggest all errors, but that maybe does not cover the unchecked type. I will look to test this.</p>
                              <blockquote style="margin: 10px 0 0; border-left: 1px solid #cccccc; color: #707070; margin-left: 19px; padding: 10px 20px">
                              <p style="margin: 10px 0 0; margin-top: 0">The cred resolvers in the parameters should be instances of the new JOSEObjectCredentialResolver</p>
                              </blockquote><p style="margin: 10px 0 0">Agreed, I will switch those over. And create a new one that supports the <tt>EvaluableCredentialCriterion</tt>. </p>
                              <blockquote style="margin: 10px 0 0; border-left: 1px solid #cccccc; color: #707070; margin-left: 19px; padding: 10px 20px">
                              <p style="margin: 10px 0 0; margin-top: 0">In the JWTDecrypter you should always add the EncryptedJWT to the criteria using the JOSEObjectCriterion </p>
                              </blockquote><p style="margin: 10px 0 0">OK, so I assume you mean to add the whole object rather than just the JOSE headers, or picking out the keyID and ‘alg’ as separate criterion?</p>
                              <blockquote style="margin: 10px 0 0; border-left: 1px solid #cccccc; color: #707070; margin-left: 19px; padding: 10px 20px">
                              <p style="margin: 10px 0 0; margin-top: 0">eval of that criteria input is done auto-magically by one of the abstract base classes of resolver called AbstractCriteriaFilteringCredentialResolver</p>
                              </blockquote><p style="margin: 10px 0 0">Yes, I already have this for the OIDC Provider Metadata resolver for the sig trust engine. So have some experience. That also builds an EvaluableKeyIDCredentialCriterion which is indeed automatically filtered by the base class. So I need to add that detail to the local key decryption resolvers.</p><p style="margin: 10px 0 0">So yes, perhaps the AbstractCriteriaFilteringCredentialResolver could be moved into API.</p><p style="margin: 10px 0 0">I think this work could be useful - in the long run - to the OIDC OP as well.</p></td>
                              </tr>
                              </tbody>
                              </table></td>
                              </tr>
                              <tr>
                              <td class="email-content-main mobile-expand " style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff" bgcolor="#ffffff"><script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "EmailMessage",
  "description": "View Issue",
  "potentialAction": {
    "@type": "ViewAction",
        "target": "https://shibboleth.atlassian.net/browse/JCOMOIDC-45?inbox=true&focusedCommentId=33122&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-33122",
    "name": "View Comment"
      },
  "publisher": {
    "@type": "Organization",
    "name": "Atlassian",
    "url": "https://www.atlassian.com"
  }
}
</script>
                              <table id="actions-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px">
                              <tbody>
                              <tr>
                              <td id="actions-pattern-container" valign="middle" style="padding: 0; border-collapse: collapse; padding: 10px 0 10px 24px; vertical-align: middle; padding-left: 0">
                              <table align="left" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
                              <tbody>
                              <tr>
                              <td class="actions-pattern-action-icon-container" style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 0; vertical-align: middle"><a href="https://shibboleth.atlassian.net/browse/JCOMOIDC-45#add-comment?atlOrigin=eyJpIjoiZjRlMDZlMzg0YzVhNDc3ZWIxNThjODNkNjI5NmRmNjgiLCJwIjoiaiJ9" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none"> <img class="actions-pattern-action-icon-image" src="cid:jira-generated-image-static-comment-icon-38e82a91-e5d9-4a70-a1da-5a58ab56833e" alt="Add Comment" title="Add Comment" height="16" width="16" border="0" style="vertical-align: middle"> </a></td>
                              <td class="actions-pattern-action-text-container" style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 4px; padding-left: 5px"><a href="https://shibboleth.atlassian.net/browse/JCOMOIDC-45#add-comment?atlOrigin=eyJpIjoiZjRlMDZlMzg0YzVhNDc3ZWIxNThjODNkNjI5NmRmNjgiLCJwIjoiaiJ9" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none">Add Comment</a></td>
                              </tr>
                              </tbody>
                              </table></td>
                              </tr>
                              </tbody>
                              </table></td>
                              </tr><!-- there needs to be content in the cell for it to render in some clients -->
                              <tr>
                              <td class="email-content-rounded-bottom mobile-expand" style="padding: 0; border-collapse: collapse; color: #ffffff; padding: 0 15px 0 16px; height: 5px; line-height: 5px; background-color: #ffffff; border-top: 0; border-left: 1px solid #cccccc; border-bottom: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; mso-line-height-rule: exactly" height="5" bgcolor="#ffffff"> </td>
                              </tr>
                            </tbody>
                        </table></td>
                </tr>
                <tr>
                    <td id="footer-pattern" style="padding: 0; border-collapse: collapse; padding: 12px 20px">
                        <table id="footer-pattern-container" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
                            <tbody>
                              <tr>
                              <td id="footer-pattern-mobile-separated-links" class="mobile-resize-text" width="100%" colspan="2" style="padding: 0; border-collapse: collapse; color: #999999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px"> Get Jira notifications on your phone! Download the Jira Cloud app for <a href="https://play.google.com/store/apps/details?id=com.atlassian.android.jira.core&referrer=utm_source%3DNotificationLink%26utm_medium%3DEmail" style="color: #3b73af; text-decoration: none">Android</a> or <a href="https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&ct=EmailNotificationLink&mt=8" style="color: #3b73af; text-decoration: none">iOS</a>
                              <hr></td>
                              </tr>
                              <tr>
                              <td id="footer-pattern-text" class="mobile-resize-text" width="100%" style="padding: 0; border-collapse: collapse; color: #999999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px"> This message was sent by Atlassian Jira <span id="footer-build-information">(v1001.0.0-SNAPSHOT#100202-<span title="e905ae51d050460ca9bb854f3afcb2a442a65e99" data-commit-id="e905ae51d050460ca9bb854f3afcb2a442a65e99}">sha1:e905ae5</span>)</span></td>
                              <td id="footer-pattern-logo-desktop-container" valign="top" style="padding: 0; border-collapse: collapse; padding-left: 20px; vertical-align: top">
                              <table style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
                              <tbody>
                              <tr>
                              <td id="footer-pattern-logo-desktop-padding" style="padding: 0; border-collapse: collapse; padding-top: 3px; opacity: 0.150"><img id="footer-pattern-logo-desktop" src="cid:jira-generated-image-static-footer-desktop-logo-878ccaff-69f5-4311-9e39-1e839e0ac5ee" alt="Atlassian logo" title="Atlassian logo" width="192" height="24" class="image_fix"></td>
                              </tr>
                              </tbody>
                              </table></td>
                              </tr>
                            </tbody>
                        </table></td>
                </tr>
            </tbody>
        </table>
    </body>
</html>