The suggestion was made that both `mp.jwt.verify.publickey.location` and `mp.jwt.verify.publickey` could be the same property. Looking at all the rules around key formats and urls, it would definitely be a lot of magic for one property.
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/ECE1BFE6-5F42-462A-9B17-931A2647096E%40tomitribe.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/ECE1BFE6-5F42-462A-9B17-931A2647096E%40tomitribe.com.
For more options, visit https://groups.google.com/d/optout.
On May 1, 2018, at 1:58 AM, Scott Stark <sst...@redhat.com> wrote:I missed the supported key formats section where it mentions JWKS, but there is the question of the minimal attributes that need to be on the JWK object.
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/1f6ddb29-c1c1-490e-9257-0ba893697b91%40googlegroups.com.
On May 1, 2018, at 12:48 PM, Scott Stark <sst...@redhat.com> wrote:Should we require more is the question. I'm inclined to require the "alg": "RS256" since that is all we support, but not the "use" as this is a potentially multivalued parameter that I don't see a real benefit to.
On Tuesday, May 1, 2018 at 10:43:48 AM UTC-7, David Blevins wrote:On May 1, 2018, at 1:58 AM, Scott Stark <sst...@redhat.com> wrote:I missed the supported key formats section where it mentions JWKS, but there is the question of the minimal attributes that need to be on the JWK object.That should be section 9.2.2 second sentence:"At minimum JWK formatted Public Keys must contain the kty field. RSA Public Keys must contain the n and e fields."We can definitely update more if needed.-David
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/7844ad96-4222-4bf4-995e-eb2324cc7069%40googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/0e7bc297-9ba2-4713-80ff-134f6c7f8297%40googlegroups.com.
The first pass at the config related tck tests has been merged. Are we ready for an RC1?
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/eceb4616-2997-447b-b7d4-ea6d436abed8%40googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/eceb4616-2997-447b-b7d4-ea6d436abed8%40googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/cbbc72bd-a6ad-4f9c-ac5f-3419511d417b%40googlegroups.com.
Thanks David!
Here are my comments:
1. For the statement in section 9.1
"
Public Keys do not rotate frequently and storing them in the binary image or on disk is a realistic option for many environments.
"
There are token issuers that dynamically generate private/public every day (like Google), and does not use server's private key to sign. So maybe we should say
"
If signing Key is not rotated frequently, storing them in the binary image or on disk is a realistic option for many environments.
"
2. For the "Note" in section 9.2
"
Symmetrically signed JWTs such as HMAC-SHA256 (hs256) are explicitly not
supported, deemed insecure for a distributed Microservice architecture where
JWTs are expected to be passed around freely. Use of symmetric signatures would
require all microservices to share a secret, eliminating the ability to determine who
created the JWT.
"
Should we relax it to be "Using HS256 is Not Recommended and supporting HS256 is optional"? With JWK, you will not need manually distribute shared secret. The token issuer could publish the shared key in JWK, and protect the JWK endpoint with issuer's certificate. See https://tools.ietf.org/html/rfc7517#appendix-A.3. We also noticed some Spring applications are still using HS256, and we should keep the interop option open"
3. For section 9.2.3
"
MicroProfile JWT implementations are required to throw a DeploymentException if a JWKS is supplied via static configiuration and contains multiple keys, but no kid.
MicroProfile JWT implementations are required to return a 401 at runtime in situations where a kid is either required or does not match.
"
Should we not do validation and throw exception here? and leave it to vendor. If runtime can not resolve the key, runtime will return 401 anyway. I prefer that Microprofile can work many existing deployment even it may not fully in MP-JWT format, we define what is required to be working, but we do not prevent other scenarios. For example, some token issued by Azure/ADFS still emit "x5t" as key identifier, but the payload has MP-JWT format.
4. For section 9.3.1
"
MicroProfile JWT implementations are required to throw a DeploymentException if neither mp.jwt.verify.publickey nor mp.jwt.verify.publickey.location are supplied.
"
We should not throw exception here, because today every vendor already has its own way to supply validation key. Also this restriction totally block symmetric key although it is not a desired algorithm.
5.
For "9.3.2.3. http: URL Scheme"
Should we limit the required support to JWK or JWKS only?
6. "9.3.3. mp.jwt.verify.issuer"
The statement "In most cases relying on the digital signature check via the Public Key alone is sufficient to establish trust." is not always true. Some token issuer does not use server's private key to sign token, and it actually dynamically generate and rotate a key pair, and sign token with the private key. This signing strategy can be seen in OIDC, which may be why OIDC always require a matching "iss".
For this statement "If the mp.jwt.verify.issuer config property has not been set, any issuer or none at all is allowed.". Even if we want to allow any issuer, but we will still need "iss" is included in JWT with the format defined similar to OIDC (see http://openid.net/specs/openid-connect-core-1_0.html:)
- Issuer Identifier: Verifiable Identifier for an Issuer. An Issuer Identifier is a case sensitive URL using the https scheme that contains scheme, host, and optionally, port number and path components and no query or fragment components.
6. In our early discussion, we talked about define a cookie name, "MPJWT" in addition to "Authorize Bearer ....". Are we going to document this? I know we also discuss cookie security issues, but that is not unique to MPJWT, all existing and known protection mechanism still apply to this cookie.
On May 16, 2018, at 9:27 PM, Scott Stark <sst...@redhat.com> wrote:I have commented inline.
On Wednesday, May 16, 2018 at 2:03:06 PM UTC-7, Chunlong Liang wrote:Thanks David!
Here are my comments:
1. For the statement in section 9.1
"
Public Keys do not rotate frequently and storing them in the binary image or on disk is a realistic option for many environments.
"
There are token issuers that dynamically generate private/public every day (like Google), and does not use server's private key to sign. So maybe we should say
"
If signing Key is not rotated frequently, storing them in the binary image or on disk is a realistic option for many environments.
"That seems like a reasonable change. I updated it to something similar.
2. For the "Note" in section 9.2
"
Symmetrically signed JWTs such as HMAC-SHA256 (hs256) are explicitly not
supported, deemed insecure for a distributed Microservice architecture where
JWTs are expected to be passed around freely. Use of symmetric signatures would
require all microservices to share a secret, eliminating the ability to determine who
created the JWT.
"
Should we relax it to be "Using HS256 is Not Recommended and supporting HS256 is optional"? With JWK, you will not need manually distribute shared secret. The token issuer could publish the shared key in JWK, and protect the JWK endpoint with issuer's certificate. See https://tools.ietf.org/html/rfc7517#appendix-A.3. We also noticed some Spring applications are still using HS256, and we should keep the interop option open"This section is talking about the JWT signing algorithms as I understand it. For interop, I thought we did require RS256, and we do have a TCK test, InvalidTokenTest#callEchoBadSignerAlg that tests that a non-RS256 signed token fails. Perhaps this is not testing that it fails for the reason of an unsupported alg (which is HS256 in the test), since the shared key is not available, a server would not be able to validate it anyway. In section 4.1 we are saying that the JWT alg claim must be RS256. We also talk about this in section 6. I guess we need to clarify how the alg JOSE header parameter should be treated.
3. For section 9.2.3
"
MicroProfile JWT implementations are required to throw a DeploymentException if a JWKS is supplied via static configiuration and contains multiple keys, but no kid.
MicroProfile JWT implementations are required to return a 401 at runtime in situations where a kid is either required or does not match.
"
Should we not do validation and throw exception here? and leave it to vendor. If runtime can not resolve the key, runtime will return 401 anyway. I prefer that Microprofile can work many existing deployment even it may not fully in MP-JWT format, we define what is required to be working, but we do not prevent other scenarios. For example, some token issued by Azure/ADFS still emit "x5t" as key identifier, but the payload has MP-JWT format.Chunlong, are you against the DeploymentException when the JWKS is given explicitly, rather than as a URI? I'm taking that is what David is meaning here as "static configuration". I agree one cannot necessarily validate a URI to a JWKS endpoint, and that situation cannot require a DeploymentException.There is an example of a Azure/ADFS JWT header on this page that shows the use of the "x5t" parameter rather than kid{ "typ": "JWT", "alg": "RS256", "x5t": "kriMPdmBvx68skT8-mPAB3BseeA" }So perhaps validation of the kid should not be done as there are several alternative methods described for matching public/private keys in the JOSE Header section of the JWE RFC.
4. For section 9.3.1
"
MicroProfile JWT implementations are required to throw a DeploymentException if neither mp.jwt.verify.publickey nor mp.jwt.verify.publickey.location are supplied.
"
We should not throw exception here, because today every vendor already has its own way to supply validation key. Also this restriction totally block symmetric key although it is not a desired algorithm.Right, we have existing TCK tests that produce deployments that have no META-INF/microprofile-config.properties that rely on the vendor TCK integration code to map the expected signer and issuer in whatever way is supported using the Arquillian ApplicationArchiveProcessor hook. Enforcing this would require all of the TCK tests to be updated to supply a META-INF/microprofile-config.properties, and MP-JWT 1.0 deployments would simply start to fail.5.
For "9.3.2.3. http: URL Scheme"
Should we limit the required support to JWK or JWKS only?Why do you bring up that question with respect to the URL Scheme section? Isn't that a more general question for the "9.2 Supported Public Key Formats" section?
6. "9.3.3. mp.jwt.verify.issuer"
The statement "In most cases relying on the digital signature check via the Public Key alone is sufficient to establish trust." is not always true. Some token issuer does not use server's private key to sign token, and it actually dynamically generate and rotate a key pair, and sign token with the private key. This signing strategy can be seen in OIDC, which may be why OIDC always require a matching "iss".
For this statement "If the mp.jwt.verify.issuer config property has not been set, any issuer or none at all is allowed.". Even if we want to allow any issuer, but we will still need "iss" is included in JWT with the format defined similar to OIDC (see http://openid.net/specs/openid-connect-core-1_0.html:)
- Issuer Identifier: Verifiable Identifier for an Issuer. An Issuer Identifier is a case sensitive URL using the https scheme that contains scheme, host, and optionally, port number and path components and no query or fragment components.
6. In our early discussion, we talked about define a cookie name, "MPJWT" in addition to "Authorize Bearer ....". Are we going to document this? I know we also discuss cookie security issues, but that is not unique to MPJWT, all existing and known protection mechanism still apply to this cookie.I did add a simple section on cookie support.
--
You received this message because you are subscribed to a topic in the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/IVDoXw12qXo/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/d3b78d8d-3209-4736-9fab-aea02feb8d49%40googlegroups.com.
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAJNN2AmLiLJj3ih1LPTFtZM3MNFqPQbWr0_cs59iNaeaQXxuMA%40mail.gmail.com.
The trick with "*" is it doesn't address what happens if a user does nothing, so the default case would still be vendor specific. I'm not a fan of establishing "*" as an explicit way to say java.util.Optional values should be null for MP Config variables. We wouldn't be able to do it consistently everywhere, so I think it would grow strangely over time.We should yank `mp.jwt.verify.issuer` for this release if we can't agree on an approach that makes us all comfortable.We can get 1.1 out the door and keep discussing. That would be much better than forcing one of us to implement something we don't want or defining something as vendor specific.--David Blevins
On May 18, 2018, at 11:51 AM, Chunlong Liang <chance...@gmail.com> wrote:
Explicitly setting mp.jwt.verify.issuer config property to '*' (even some other keyword is fine) to disable issuer checking is a good solution.
On Fri, May 18, 2018 at 11:12 AM, Scott Stark <sst...@redhat.com> wrote:
The problem with that is that we are saying that there is no way to disable the verification of the iss claim in a vendor independent way.What if we instead said that setting the mp.jwt.verify.issuer config property to '*' disables iss claim validation and MP-JWT with any iss claim, or none must be accepted?If the problem is that there must be an iss claim in the MP-JWT, then I think we are stuck.
On Friday, May 18, 2018 at 7:48:29 AM UTC-7, Chunlong Liang wrote:
Yesterday we did discuss "iss" claim, and I did agree to keep the statement as it is. But I am still not comfortable with it, and keep thinking about that statement. It is a common perception that JWT is more like a simple clone of SAML that issuer is always required as an identifier of assertion/token issuer. Also it is my experience that token signing key is not always the same as server's private key for SSL connection, so we should separate token signing key from token issuer. Even if signing key is server private key, you usually would need a name to name server/key.
For this reason, I would like to propose the following (last minute) change, which give us more option to define "iss" behavior in the future.
"If the mp.jwt.verify.issuer config property has not been set, any issuer or none at all is allowed."
To
"If the mp.jwt.verify.issuer config property has not been set, the issuer verification is vendor specific."
--
You received this message because you are subscribed to a topic in the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/IVDoXw12qXo/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/d3b78d8d-3209-4736-9fab-aea02feb8d49%40googlegroups.com.
<role-name>**</role-name>
to give permission to any authenticated user.
If "*" is a bad choice, could we define some key word like "PermitAll", or "ANY", "ALL"?To unsubscribe from this group and all its topics, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/84779309-aefc-4815-b1c4-11c9f28863ca%40googlegroups.com.
To unsubscribe from this group and all its topics, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/49a5fec5-3705-46a9-8793-575c07bbb854%40googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAJNN2AkiZazLin%3D%2BjVDgvcoEc9mmJ%3DcSiFa4O90VzKSTdvAdQQ%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAPkio3E2AMRfc33D7SQ%2BCrZJZ7yzgY56G0_mKGayJyaUixU%2BvA%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAJNN2AktN7h5Lf2DCfs4KK6k%2B_a-PhXY8C5RJqNnv-dF6JX3Xw%40mail.gmail.com.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAJNN2AktN7h5Lf2DCfs4KK6k%2B_a-PhXY8C5RJqNnv-dF6JX3Xw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/IVDoXw12qXo/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/1766A305-05A4-4620-9DC6-2B2DD04A6CAE%40tomitribe.com.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAJNN2AktN7h5Lf2DCfs4KK6k%2B_a-PhXY8C5RJqNnv-dF6JX3Xw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/1766A305-05A4-4620-9DC6-2B2DD04A6CAE%40tomitribe.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/49a5fec5-3705-46a9-8793-575c07bbb854%40googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAJNN2AkiZazLin%3D%2BjVDgvcoEc9mmJ%3DcSiFa4O90VzKSTdvAdQQ%40mail.gmail.com.
--
You received this message because you are subscribed to a topic in the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/IVDoXw12qXo/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAPkio3E2AMRfc33D7SQ%2BCrZJZ7yzgY56G0_mKGayJyaUixU%2BvA%40mail.gmail.com.
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAJNN2AktN7h5Lf2DCfs4KK6k%2B_a-PhXY8C5RJqNnv-dF6JX3Xw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To unsubscribe from this group and all its topics, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/852ebcd7-a346-4d03-a3dd-ca388e8d5183%40googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/d137a114-c630-48d5-9d64-0d5f14f58be7%40googlegroups.com.
--
You received this message because you are subscribed to a topic in the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/IVDoXw12qXo/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/f78d482c-0f67-47f8-b100-7a1f3f073c59%40googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "Eclipse MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/f598f949-232e-4507-9767-a6251ad9108c%40googlegroups.com.