Thanks for your sharing, could you contribute it to Zeppelin doc ?

Alessandro Busato <alessandro.bus...@gmail.com> 于2021年10月21日周四 下午3:54写道:

> I don't want boring you with this problem but I implemented the definitive
> solution  keeping zeppenlin authorization as is. I think is the more clean
> solution.
>
> Use apache proxy to overcome CORS problems
> I did proceed in this way:
> Zeppelin: modify zeppelin-site.xml change property
> zeppelin.server.context.path from "/" to "/zeppelin"
> Apache2 in the same host (in my case 192.168.56.107) where your app lives:
>          enable module proxy proxy_http
>          add the following lines to , ie. http-vhost.conf
>                ProxyPass /zeppelin http://192.168.56.105:9090/zeppelin
> timeout=600
>                ProxyPassReverse /zeppelin
> http://192.168.56.105:9090/zeppelin timeout=600
> Your app: call zeppelin rest api using Apache2 host,
> ie. http://192.168.56.107/zeppelin/api/login ,
> http://192.168.56.107/zeppelin/api/notebook etc.
>
> STOP.
>
> if you would include paragraph link into any iframes of your app rebembers
> to proxy websocket too
>
> Best regards,
> Alessandro
>
>
> On 2021/10/18 10:57:25, Alessandro Busato <alessandro.bus...@gmail.com>
> wrote:
> > it is better
> > /api/notebook/** = authcBasic
> > /** = authc
> >
> > this replacement permits logging-in to webapp with no basic
> authentication  browser
> > popup and a the same time to use rest notepbook api in CORS mode with no
> problem.
> >
> > Alessandro
> >
> > On 2021/10/18 06:58:02, Alessandro Busato <alessandro.bus...@gmail.com>
> wrote:
> > > I solved in this way,
> > > I exploited the BasicAuthentication of shiro,
> > > I edited conf/shiro.ini and changed /** = authc into /** = authcBasic
> > > I think this "workaround" is less secure than others but
> > > in this way I can make CORS request even if the jquery doen't set
> JSESSIONID
> > >    $.ajax({
> > >                 url: "http://192.168.56.105:9090/zeppelin/api/notebook
> ",
> > >                 type: 'GET',
> > >                 cache: false,
> > >                 xhrFields: {withCredentials: true},
> > >                 crossDomain: true,
> > >                 "async": true,
> > >                 "headers": {
> > >                     "Authorization":"Basic YWRtaW46cGFzc3dvcmQx"
> > >                 }
> > >             }).done(function (data) {
> > >
> > >                 console.log(data)
> > >
> > >             }).fail(reason => {
> > >                 console.log(reason);
> > >             });
> > >
> > > Best regards,
> > > Alessandro
> > >
> > >
> > > On 2021/10/17 11:16:12, Alessandro Busato <alessandro.bus...@gmail.com>
> wrote:
> > > >
> > > >
> > > > On 2021/10/17 11:11:21, Jeff Zhang <zjf...@gmail.com> wrote:
> > > > > Do you embed zeppelin as an iframe in your app ?
> > > >
> > > > No, it isn't.
> > > >
> > > > Best regards,
> > > > Alessandro
> > > >
> > > > >
> > > > > Alessandro Busato <alessandro.bus...@gmail.com> 于2021年10月17日周日
> 下午6:11写道:
> > > > >
> > > > > > Evewrithing works in the if zeppelin and my webapp lives in the
> same
> > > > > > origin,
> > > > > > but NOT when I'm trying to connecto to zeppelin server via CORS,
> > > > > > the login step works,
> > > > > > but others as "notebook list"
> > > > > > jquery cannot set JSESSIONID so Zeppelin respond with redirect to
> > > > > > /api/login
> > > > > > throwing an exception because authencation params missing.
> > > > > >
> > > > > >         $('#ab_test1').on('click', function (event) {
> > > > > >             event.preventDefault();
> > > > > >
> > > > > >             $.ajax({
> > > > > >                 url: "http://192.168.56.105:9090/api/notebook";,
> > > > > >                 type: 'GET',
> > > > > >                 cache: false,
> > > > > >                 processData: false,
> > > > > >                 timeout: 3000,
> > > > > >                 xhrFields: {withCredentials: true},
> > > > > >                 crossDomain: true,
> > > > > >             }).done(function (data) {
> > > > > >                 console.log(data)
> > > > > >             }).fail(reason => {
> > > > > >                 console.log(reason);
> > > > > >             });
> > > > > >         })
> > > > > >
> > > > > > In the same origin trial jquery set cookie correctly,
> > > > > > I  tried to access to response headers "Set-Cookie" to set
> manually the
> > > > > > cookie but  only "Content-Type" and "Content-Length" are
> available.
> > > > > >
> > > > > > I've configured zeppelin-site.xml to allow my origin (example:
> ALLOW FROM
> > > > > > http://192.168.56.107)
> > > > > > Any suggestion?
> > > > > > does exists a way to bypass JSESSIONID passing ticket got with
> api login?
> > > > > >
> > > > > > Regards,
> > > > > > Alessandro
> > > > > >
> > > > > >
> > > > >
> > > > > --
> > > > > Best Regards
> > > > >
> > > > > Jeff Zhang
> > > > >
> > > >
> > >
> >
>


-- 
Best Regards

Jeff Zhang

Reply via email to