Hi Alex,
The current implementation returns `2` as exit code when the login fails or
you try make a query and the authentication failed.

Juan


On Thu, 23 May 2019 at 12:09, Alex Heneveld <[email protected]> wrote:

>
> Juan-
>
> This looks really good to me.
>
> If you don't use OAuth, no change, and `br` works as it always has.
>
> If you do need OAuth, you define the process to get the header (maybe
> another script, say br-my-oauth), which can then use`br` to persist the
> header for subsequent usage by `br`.  You'll have to explicitly
> re-generate the header whenever the session times out.
>
> Alternatively the user could rename `br` to `br-original` then write
> their own script `br` which tries `br-original` but if auth fails it
> automaticalllly invokes `br-my-oauth` and retries `br-original`.  That
> way login would be as seamless as possible.
>
> Can we make it so `br` returns a special non-zero exit code on auth
> faillure?  (Different to exit code on other errors.)
>
> Best
> Alex
>
>
> On 23/05/2019 10:33, Juan Cabrerizo wrote:
> > Hi Geoff. Thanks your your thoughts.
> >
> > As different oauth providers can implement login in very different ways,
> > for the moment I'm bypassing the process for request the token. Once the
> > user get it with an external mechanism, he can add it when do login with
> br.
> > As you said, once you use the token for login, you need sent it on all
> REST
> > calls for authentication.
> > And also, I added a new parameter for do not request for user and
> password.
> > If it is added, br won't sent the current basic authentication header.
> > The command will be executed as:
> >
> > br login http://server:port --noCredentials --header 'Authorization:
> Bearer
> > xxxxx.yyyyyy.zzzzz' --header 'OtherHeader=headerValue'
> >
> > This execution will crate this persisted yaml:
> > {
> >      "credentials": {
> >          "http://localhost:8081": "Og=="
> >      },
> >      "credentialsRequired": false,
> >      "headers": {
> >          "Authorization: Bearer xxxxx.yyyyyy.zzzzz": "",
> >          "OtherHeader": "headerValue"
> >      },
> >      "skipSslChecks": false,
> >      "target": "http://localhost:8081";
> > }
> >
> > If you don't add this new parameter, the behavior will be the same as
> > before, so it won't affect that not use oauth.
> > I defined for the moment `headers` and `credentialsRequired` as global
> (no
> > related to any target) as is for `skipSslChecks`
> >
> > Other more ambitious change could be modify the structure to something
> like:
> > {
> >      "servers": {
> >           "http://localhost:8081":{
> >
> > "credentials":"Odddg=="
> >
> > },
> > http://remote1:8081":{
> >
> > "credentials":"xxxxx=="
> >
> > },
> > http://remote2:8081":{
> >
> > "credentialsRequired": false,
> >
> > "headers": {
> >
> > "Authorization: Bearer xxxxx.yyyyyy.zzzzz": "",
> >
> > "OtherHeader": "headerValue"
> >
> > },
> >
> > },
> >
> >      },
> >
> >      "skipSslChecks": false,
> >      "target": "http://localhost:8081";
> > }
> >
> > I already have the first version working and i'm testing it in a couple
> of
> > environments, probably I'c create a PR this week. I'm not sure if it
> worth
> > make more changes.
> >
> > Thanks again for your ideas.
> >
> > Regards
> >
> > Juan
> >
> > On Wed, 22 May 2019 at 23:12, Geoff Macartney <[email protected]
> >
> > wrote:
> >
> >> Hi Juan,
> >>
> >> If I understand you right you mean that the login command will do a
> >> request to Brooklyn, sending the username and collected password, and
> >> Brooklyn will do the interaction with the OAuth server to obtain a
> token,
> >> which it will return to the br tool (in the form of a JWT token). Then
> br
> >> can store that in its local .brooklyn_cli file.  What is the REST
> request
> >> to be used for that login action?
> >>
> >> Subsequently all requests will be sent with
> >>
> >> Authorization: Bearer xxxxx.yyyyyy.zzzzz
> >>
> >> Where x.y.z is the JWT token.
> >>
> >> Is the above understanding right?
> >>
> >> How will your design support br being able to log in to some Brooklyn
> >> servers without OAuth configured, and others that do use OAuth?
> >>
> >> Just a couple of thoughts, but I’m keen to see this. Happy to review any
> >> early draft pull requests you may have.
> >>
> >> Regards
> >> Geoff
> >>
> >>> On 21 May 2019, at 15:11, Juan Cabrerizo <[email protected]> wrote:
> >>>
> >>> Hello all
> >>>
> >>> I'm continuing with changes for allow oauth authentication in Apache
> >>> Brooklyn. I'm working now on the BR command line tool.
> >>> The initial idea is send the JWT access token in the headers instead
> send
> >>> the basic authentication header when the token is available after
> >> execute a
> >>> login command to get the token.
> >>>
> >>> I'll modify the BR login command to allow inject headers and store it
> on
> >>> the yaml file and sent on the API calls. Is a new Authorization header
> is
> >>> available sent it rather than the default authentication.
> >>>
> >>> Any concerns about this approach? I'm fully open to any idea.
> >>>
> >>> Best regards.
> >>>
> >>> Juan
> >>>
> >>> --
> >>> Juan Cabrerizo
> >>> Software Engineer
> >>>
> >>> *Cloudsoft <https://cloudsoft.io/> *| Bringing Business to the Cloud
> >>> E: [email protected]
> >>> L: https://www.linkedin.com/in/juancabrerizo/
> >>>
> >>> Need a hand with AWS? Get a Free Consultation.
> >>
>
>

-- 
Juan Cabrerizo
Software Engineer

*Cloudsoft <https://cloudsoft.io/> *| Bringing Business to the Cloud
E: [email protected]
L: https://www.linkedin.com/in/juancabrerizo/

Need a hand with AWS? Get a Free Consultation.

Reply via email to