Hi Fabrizio, I totally agree. We will not enbed libmacroons source into the xroot repo simply to avoid this kind of mess (for us and everyone else :-). So, I urge that you or whomever you lean on, repackge libmacaroons into an EPEL-style package that we can use without ever looking at the source. Andy On Thu, 14 Jun 2018, Fabrizio Furano wrote: > Hi Andy, > > yes, development style is one thing, and so far the xrootd project > has been very clear on that. > > In this case I had DPM in mind, and its WebDAV frontend > already embedded the source of libmacaroons quite some time ago. > Now we are talking about embedding the code of libmacaroons also in xrootd. > > The result would be to have potentially two different versions of > the same code in the same DPM system, coming from two different > frontends. > > It will work (I believe), yet the clean solution IMO is to properly > package libmacaroons into EPEL+debian, so that noone needs to embed the code anymore. > > f > > > On 06/14/2018 12:01 PM, Andrew Hanushevsky wrote: >> Hi Fabrizio, >> >> I totally agree that having two source builds are a pain and should be avoided. I'm almost tempted to say should be prohibited. >> In the xroot case, it should be possible to develop a plugin by installing the rpms you are dependent on and restricting >> yourself to whatever public headers come with it. That's how it's done with all commonly used third party >> packages. If can't develop that way then something is fundamentally wrong and should be corrected. Doing it that way, avoids the >> exact problem you mention. So, I guess it comes down to how we enforce that kind of development style. Do you agree? >> >> Andy >> >> On Thu, 14 Jun 2018, Fabrizio Furano wrote: >> >>> Hi Andy, >>> >>> yes, that would be clean, and personally I would prefer to >>> have libmacaroons in the stock repos. >>> >>> The annoyance I'd like to avoid is that so far DPM builds >>> libmacaroons inside the source tree as an internal dep, >>> exactly as you describe, for using it inside Apache. It's there >>> since one year and a half... >>> >>> It would be quite annoying to have two versions of the same lib >>> built inside the source tree of two different frontends: mod_lcgdm_dav >>> and xrootd >>> >>> This is why I'd prefer to investigate if we can organize an "official" >>> publishing of libmacaroons, at least to epel and debian. This thing >>> has already been done in the past, and would represent to me the >>> cleanest scenario possible, or at least it would give the possibility >>> of having a clean situation. >>> >>> ... thoughts? >>> >>> Cheers >>> Fabrizio >>> >>> >>> On 14.06.18 09:55, Andrew Hanushevsky wrote: >>>> In general, we do not add components to the main repo that depend on >>>> third party libraries that are not available in a stock system. The >>>> reasons for this should be obvious. The Macroon component is only one of >>>> several components that people are developing with third party >>>> dependencies. So we know we need to solve this problem. Our current >>>> thinking is to setup additional projects in the main xroot repo to host >>>> such developments and include them into our standard build pipeline. >>>> Doing this should solve the dependency issue as well as making it >>>> trivial to assign proper ownership so we aren't in the loop in terms of >>>> updates and whatever. However, we would package them and sites could >>>> install whatever they want via rpm. That way, those who wish to use a >>>> feature know ahead of time that there will be additional libraries that >>>> will be installed that we have no control over and may conflict with >>>> whatever they already have installed. >>>> >>>> This seems the like the cleanest approach to this issue and avoids >>>> leaving dead code in the main repo as these components come into and >>>> fall out of favor. Michal and I have to work on this as we don't it in >>>> place but should have a workable solution relatively soon. >>>> >>>> Andy >>>> >>>> On Wed, 13 Jun 2018, Fabrizio Furano wrote: >>>> >>>>> Hi Brian, >>>>> >>>>> true, macaroons are implemented by DPM and dcache. Having them also in >>>>> xrootd >>>>> would be great. >>>>> >>>>> About the distribution, my personal preference is to have these things >>>>> handy to >>>>> install and clean on the source tree, so I'd love to see macaroons and >>>>> scitokens >>>>> in the Xrd codebase, respecting all the strict project rules about >>>>> makefiles (e.g. turning off the component) and deps. >>>>> >>>>> What did you do for libmacaroons? Since it's not distributed, we build >>>>> it with DPM so far. >>>>> Are you doing the same? >>>>> Maybe we want to find a volunteer packager that submits it to >>>>> epel/debian, etc. >>>>> and only then refine the details of a build with Xrd ? >>>>> >>>>> Fabrizio >>>>> >>>>> >>>>> On 06/13/2018 04:08 PM, Brian Bockelman wrote: >>>>>> Hi, >>>>>> >>>>>> I have an initial (but functioning) support for Macaroons in Xrootd: >>>>>> >>>>>> https://github.com/bbockelm/xrootd-macaroons >>>>>> >>>>>> Macaroons are a symmetric-key-based token format. It allows an >>>>>> entity with access to the secret key generate a bearer token >>>>>> embedding one more "caveats" (rules for usage, such as restrictions >>>>>> on path, expiration time, or valid operations). The bearer >>>>>> of the token can add additional caveats (reducing permission) but >>>>>> doesn't have the ability to remove them. >>>>>> >>>>>> Anyone else with the secret key (such as the same host or another >>>>>> host in the cluster) can then verify the token as apply the >>>>>> authorization rules in the caveats. >>>>>> >>>>>> Why is this useful? A few cases: >>>>>> >>>>>> 1. Delegating fine-grained access: Rucio generates a token to access >>>>>> a single file at a site (using its X509 client cert to >>>>>> authenticate), then sends the token to an end-user. Hence, the >>>>>> end-user doesn't need to authenticate with the site (no user >>>>>> X509 necessary) in order to download files. The VO (ATLAS, via >>>>>> Rucio) can manage the fine-grained rights they delegate to the >>>>>> user -- even if the storage is run by the site. >>>>>> >>>>>> 2. Enabling third-party-copy: If client C wants server A to download >>>>>> from server B, the client can contact server B for a >>>>>> fine-grained access token and provide it to server A as part of the >>>>>> HTTP COPY request. >>>>>> - I suspect I'll get the first FTS3-based transfers working today. >>>>>> >>>>>> IIUC, Macaroons are implemented by dCache and DPM. I utilized the >>>>>> same caveat formats and API for requesting new tokens, but >>>>>> generally one would not expect tokens to be reusable across different >>>>>> implementations or site installations. >>>>>> >>>>>> Currently, the token is generated via a XrdHttp plugin but should be >>>>>> usable throughout the authorization framework; however, you >>>>>> need an encrypted channel between client and server to use it safely. >>>>>> >>>>>> The obvious question is "how does this differ from SciTokens"? >>>>>> - SciTokens are based on asymmetric (public key) cryptography whereas >>>>>> Macaroons are symmetric key. This means anyone can verify >>>>>> a SciToken but only the issuing entity can verify a Macaroon. >>>>>> - In the SciTokens model, the VO issues the authorization, which may >>>>>> be valid across many sites. The macaroon is specific to >>>>>> the site and requires an interaction with the site to generate. >>>>>> - Macaroons can be attenuated (made weaker) by the end-user. I can >>>>>> take a powerful macaroon and add additional limitations >>>>>> without contacting a third-party, then safely give the limited >>>>>> macaroon to another person if I desire. SciTokens can only be >>>>>> attenuated by contacting the VO to exchange the powerful one for a >>>>>> new one (hence, the VO always generates the token). >>>>>> >>>>>> Just as one uses a mix of asymmetric and symmetric cryptography >>>>>> throughout the course of the day, I see SciTokens and Macaroons >>>>>> as complementary approaches, each enabling some distinct and some >>>>>> common use cases. >>>>>> >>>>>> So - one natural question for me is whether this better lives inside >>>>>> the xrootd repository or standalone. Unlike SciTokens, the >>>>>> dependency stack for Macaroons is more manageable (a direct >>>>>> dependency on libmacaroons - https://github.com/rescrv/libmacaroons >>>>>> - and an indirect dependency on libbsd). This means upstreaming of >>>>>> the macaroons code is more approachable than the SciTokens >>>>>> code. Additionally, since the code includes both an issuer and a >>>>>> verifier, Macaroons are more immediately usable - no >>>>>> non-Xrootd services setup. >>>>>> >>>>>> Accordingly, I'm leaning to converting this into a module inside the >>>>>> xrootd repository. >>>>>> >>>>>> Thoughts? >>>>>> >>>>>> Brian >>>>>> >>>>>> -------------------------------------------------------------------------------------------------------------------------------- >>>>>> >>>>>> >>>>>> >>>>>> Use REPLY-ALL to reply to list >>>>>> >>>>>> To unsubscribe from the XROOTD-DEV list, click the following link: >>>>>> https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-DEV&A=1 >>>>>> >>>>> >>>>> >>>>> ######################################################################## >>>>> Use REPLY-ALL to reply to list >>>>> >>>>> To unsubscribe from the XROOTD-DEV list, click the following link: >>>>> https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-DEV&A=1 >>>>> >>>> >>>> ######################################################################## >>>> Use REPLY-ALL to reply to list >>>> >>>> To unsubscribe from the XROOTD-DEV list, click the following link: >>>> https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-DEV&A=1 >>> >>> >>> > > ######################################################################## Use REPLY-ALL to reply to list To unsubscribe from the XROOTD-DEV list, click the following link: https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-DEV&A=1