[ 
https://issues.apache.org/jira/browse/METRON-1665?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16549149#comment-16549149
 ] 

ASF GitHub Bot commented on METRON-1665:
----------------------------------------

GitHub user simonellistonball opened a pull request:

    https://github.com/apache/metron/pull/1111

    METRON-1665 Host UIs on Spring Boot and add SSO authentication

    This is part of a move towards using KnoxSSO, and LDAP as an authentication 
method for Metron UIs.
    
    The current UIs are served up by very lightweight nodejs applications, 
which serve the static bundle files produced by the angular build process, and 
proxies the rest api. This PR replaces this with Spring Boot applications, 
using the Spring Security stack. 
    
    It also provides a shared project used as the base for the UI host 
application, which ensures consistent security across all UIs 
(metron-interface/metron-ui-security) an abstract web hosting application with 
zuul embedded for proxying rest to avoid cors problems 
(metron-interface/metron-ui-host) and two further concrete applications to do 
the actual hosting, the angular front-ends have been subtley changed to package 
themselves in jars which are included in the hosting applications, aiding the 
ease and integrity of the front end code on deployment. 
    
    Some tests in the rest api have been changed slightly, and a fix has been 
applied to AlertsUiController to allow users access to delete their own 
settings. The metron-rest project has also been adapted to work with 
metron-ui-security, and so inherits the same authentication benefits. 
    
    A follow on PR will address changes to the mpack to implement necessary 
config changes.
    
    Nodejs has been removed from the RPMs, and the deployment process, since it 
is no longer needed beyond the build stage. 
    
    An additional feature is the filter provided to allow JWT cookies to be 
passed to a backend through zuul as Authorization Bearer headers, allowing 
simpler stateless interaction with the rest api for example, which opens the 
possibility of deploying each layer in a load balanced or HA mode using ribbon 
config. 
    
    To test at this stage, you will need to manually configure and launch the 
metron-alerts and metron-config jars, which behave like init.d scripts. This 
can be done by launching the jars through the bin/ scripts, but would be a lot 
easier with the follow on work on mpack elements to configure them. For now, 
integration tests have been included for key function on the security layer and 
should be reviewed.
    
    ## Pull Request Checklist
    
    Thank you for submitting a contribution to Apache Metron.  
    Please refer to our [Development 
Guidelines](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=61332235)
 for the complete guide to follow for contributions.  
    Please refer also to our [Build Verification 
Guidelines](https://cwiki.apache.org/confluence/display/METRON/Verifying+Builds?show-miniview)
 for complete smoke testing guides.  
    
    
    In order to streamline the review of the contribution we ask you follow 
these guidelines and ask you to double check the following:
    
    ### For all changes:
    - [x] Is there a JIRA ticket associated with this PR? If not one needs to 
be created at [Metron 
Jira](https://issues.apache.org/jira/browse/METRON/?selectedTab=com.atlassian.jira.jira-projects-plugin:summary-panel).
    - [x] Does your PR title start with METRON-XXXX where XXXX is the JIRA 
number you are trying to resolve? Pay particular attention to the hyphen "-" 
character.
    - [x] Has your PR been rebased against the latest commit within the target 
branch (typically master)?
    
    
    ### For code changes:
    - [x] Have you included steps to reproduce the behavior or problem that is 
being changed or addressed?
    - [x] Have you included steps or a guide to how the change may be verified 
and tested manually?
    - [x] Have you ensured that the full suite of tests and checks have been 
executed in the root metron folder via:
      ```
      mvn -q clean integration-test install && 
dev-utilities/build-utils/verify_licenses.sh 
      ```
    
    - [x] Have you written or updated unit tests and or integration tests to 
verify your changes?
    - [x] If adding new dependencies to the code, are these dependencies 
licensed in a way that is compatible for inclusion under [ASF 
2.0](http://www.apache.org/legal/resolved.html#category-a)?
    - [x] Have you verified the basic functionality of the build by building 
and running locally with Vagrant full-dev environment or the equivalent?
    
    ### For documentation related changes:
    - [ ] Have you ensured that format looks appropriate for the output in 
which it is rendered by building and verifying the site-book? If not then run 
the following commands and the verify changes via 
`site-book/target/site/index.html`:
    
      ```
      cd site-book
      mvn site
      ```
    
    #### Note:
    Please ensure that once the PR is submitted, you check travis-ci for build 
issues and submit an update to your PR as soon as possible.
    It is also recommended that [travis-ci](https://travis-ci.org) is set up 
for your personal repository such that your branches are built there before 
submitting a pull request.


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/simonellistonball/metron METRON-1665

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/metron/pull/1111.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #1111
    
----
commit 90b75c27e55d868d17c59910f2ce6cf25f4f4abf
Author: Simon Elliston Ball <simon@...>
Date:   2018-07-19T09:03:12Z

    Add base projects for Hosting UIs in Spring
    Add Zuul capability
    Add KnoxSSO provider and security config

commit 8443329c90247c533bc4ffa5ef7cc64955c55f32
Author: Simon Elliston Ball <simon@...>
Date:   2018-07-19T09:20:04Z

    Packaging changes for the UIs

commit 627d37cf8092260a37c1f80d599025dbf6d3d2f7
Author: Simon Elliston Ball <simon@...>
Date:   2018-07-19T09:28:29Z

    Integrate SSO base to metron-rest and added test config

commit 824763624ec9e8abce94db0e5aaf51d7c92a6506
Author: Simon Elliston Ball <simon@...>
Date:   2018-07-19T09:52:28Z

    Clean up assembly build process based on new packaging of uis

commit bb83e0bac91581410c5bb8f62e112c930cd0d89b
Author: Simon Elliston Ball <simon@...>
Date:   2018-07-19T10:04:44Z

    Fixed security test for UI settings

commit dd6f3fb9eff2eafb3b8049abc836d7cb476a2396
Author: Simon Elliston Ball <simon@...>
Date:   2018-07-19T10:05:59Z

    Added hosting applications for UIs

commit 278f9cb40dca4d0ef1e0239ec34f85062c0d852f
Author: Simon Elliston Ball <simon@...>
Date:   2018-07-12T17:43:00Z

    Removed nodejs from rpm build process

commit c2fde46d5504769b19e9fd0872dcaf55ec6fbb6f
Author: Simon Elliston Ball <simon@...>
Date:   2018-07-19T11:19:44Z

    RPM changes for new hosting method

----


> Move hosting of Alerts and Config UIs from Nodejs to Spring Boot
> ----------------------------------------------------------------
>
>                 Key: METRON-1665
>                 URL: https://issues.apache.org/jira/browse/METRON-1665
>             Project: Metron
>          Issue Type: Sub-task
>            Reporter: Simon Elliston Ball
>            Priority: Major
>
> The current UIs are served up by very lightweight nodejs applications, which 
> serve the static bundle files produced by the angular build process, and 
> proxies the rest api.
> The proposal is to use a spring boot application, allowing us to harmonise 
> the security implementation across the UI static servers and the REST layer, 
> and to provide a routing platform for later microservices.
> The UIs currently proxy to the REST API to avoid CORS issues, this will be 
> achieved with Zuul.
> Spring Security will also be extended to use a Knox SSO authenticator. 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to