[
https://issues.apache.org/jira/browse/SHINDIG-1636?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13127674#comment-13127674
]
[email protected] commented on SHINDIG-1636:
--------------------------------------------------------
bq. On 2011-10-14 13:20:28, Jesse Ciancetta wrote:
bq. > I think I'm likely doing a poor job of conveying my ideas around the
ContainerConfig stuff because I think we're in agreement on the key points.
You had said that your really trying to decouple the security code from the
location of the key, and I'm in 100% agreement with that, and what I had
proposed with the ContainerConfig stuff would absolutely do that (the key piece
being that callers to ContainerConfig to get the value for the token key would
now get back the actual key value as opposed to a pointer to a key file or
classpath resource). If I'm missing something though and you can see that it
really wouldn't please feel free to point it out.
bq. >
bq. > For the review as is -- I've taken a pass through the code and noted the
issues that I've seen. I hope this stuff isn't nitpicky -- I'm honestly not
trying to be a pain or just having sour grapes about the difference in opinions
on the best strategy (I think discussions like this are perfectly fine and
healthy to have) -- I'm just calling what I see. Hopefully its useful. Please
feel free to tell me it's nitpicky. :-)
Not nit-picky at all. All of the concurrency issues are valid and I'm glad you
brought them up.
I think most of the problems here can be solved by removing the KeyProvider
reference from BasicBlobCrypter. Basically, BasicBlobCrypter would exist as it
did pre-patch. BlobCrypterSecurityTokenCodec would manage the BlobCrypters as
it did before by listening for key changes instead of container config changes.
And that sort of proves your point. :) Why not just stick with
ContainerConfig in this case? The only change would then be to introduce the
changes for backwards compatibility into BlobCrypterSecurityTokenCodec so it
can read both a key and keyfile from the config.
The "hybrid" ContainerConfig still feels weird to me. And maybe it's just
because of the need for backwards compatbility and probably doing it with some
conditional logic in BCSTC. The KeyProvider removes the need for that sort of
awkward logic.
How did you envision the ContainerConfig being implemented? How does it know
what values to read from another source and which ones to read from the
container.js?
And now that I think more about it, the key file container configuration param
was probably introduced to move the key out of the container.js. Now we're
sticking it back in there but "not really"? Interesting how code evolves. :)
- Stanton
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/2362/#review2581
-----------------------------------------------------------
On 2011-10-13 14:19:32, Stanton Sievers wrote:
bq.
bq. -----------------------------------------------------------
bq. This is an automatically generated e-mail. To reply, visit:
bq. https://reviews.apache.org/r/2362/
bq. -----------------------------------------------------------
bq.
bq. (Updated 2011-10-13 14:19:32)
bq.
bq.
bq. Review request for Ryan Baxter, Dan Dumont and Jesse Ciancetta.
bq.
bq.
bq. Summary
bq. -------
bq.
bq. Currently,
org.apache.shindig.auth.BlobCrypterSecurityTokenCodec.loadContainers(ContainerConfig,
Collection<String>, Map<String, BlobCrypter>, Map<String, String>) reads an
encryption key from a keyfile to instantiate the BlobCrypter. The keyfile is
defined in the container.js. An improvement to this behavior would be to
provide an injectable KeyProvider class that can return the key. This would
allow the key to reside anywhere instead of in a static keyfile.
bq.
bq. Initial review to Dan, Ryan, and Jesse. Once we've decided that this
seems like a rational approach, I'll add the dev list.
bq.
bq.
bq. This addresses bug SHINDIG-1636.
bq. https://issues.apache.org/jira/browse/SHINDIG-1636
bq.
bq.
bq. Diffs
bq. -----
bq.
bq.
http://svn.apache.org/repos/asf/shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/BlobCrypterSecurityTokenCodec.java
1182570
bq.
http://svn.apache.org/repos/asf/shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/DefaultSecurityTokenCodec.java
1182570
bq.
http://svn.apache.org/repos/asf/shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/KeyFileKeyProvider.java
PRE-CREATION
bq.
http://svn.apache.org/repos/asf/shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/KeyProvider.java
PRE-CREATION
bq.
http://svn.apache.org/repos/asf/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/crypto/BasicBlobCrypter.java
1182570
bq.
http://svn.apache.org/repos/asf/shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/BlobCrypterSecurityTokenCodecTest.java
1182570
bq.
http://svn.apache.org/repos/asf/shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/DefaultSecurityTokenCodecTest.java
1182570
bq.
http://svn.apache.org/repos/asf/shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/KeyFileKeyProviderTest.java
PRE-CREATION
bq.
bq. Diff: https://reviews.apache.org/r/2362/diff
bq.
bq.
bq. Testing
bq. -------
bq.
bq. Updated and ran existing JUnits.
bq. Created new JUnits for the new KeyFileKeyProvider.
bq. Performed manual functional tests with encrypted security tokens in the
sample common container.
bq.
bq.
bq. Thanks,
bq.
bq. Stanton
bq.
bq.
> Create a KeyProvider to provide an encryption key to the SecurityToken
> workflow
> -------------------------------------------------------------------------------
>
> Key: SHINDIG-1636
> URL: https://issues.apache.org/jira/browse/SHINDIG-1636
> Project: Shindig
> Issue Type: Improvement
> Components: Java
> Reporter: Stanton Sievers
> Original Estimate: 48h
> Remaining Estimate: 48h
>
> Currently,
> org.apache.shindig.auth.BlobCrypterSecurityTokenCodec.loadContainers(ContainerConfig,
> Collection<String>, Map<String, BlobCrypter>, Map<String, String>) reads an
> encryption key from a keyfile to instantiate the BlobCrypter. The keyfile is
> defined in the container.js. An improvement to this behavior would be to
> provide an injectable KeyProvider class that can return the key. This would
> allow the key to reside anywhere instead of in a static keyfile.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira