cloudstack/ui/scripts
Rohit Yadav 20ce346f3a CLOUDSTACK-8457: SAML auth plugin improvements for production usage
* Move config options to SAML plugin
  This moves all configuration options from Config.java to SAML auth manager. This
  allows us to use the config framework.
* Make SAML2UserAuthenticator validate SAML token in httprequest
* Make logout API use ConfigKeys defined in saml auth manager
* Before doing SAML auth, cleanup local states and cookies
* Fix configurations in 4.5.1 to 4.5.2 upgrade path
* Fail if idp has no sso URL defined
* Add a default set of SAML SP cert for testing purposes
  Now to enable and use saml, one needs to do a deploydb-saml after doing a deploydb
* UI remembers login selections, IDP server

- CLOUDSTACK-8458:
    * On UI show dropdown list of discovered IdPs
    * Support SAML Federation, where there may be more than one IdP
        - New datastructure to hold metadata of SP or IdP
        - Recursive processing of IdP metadata
        - Fix login/logout APIs to get new interface and metadata data structure
        - Add org/contact information to metadata
        - Add new API: listIdps that returns list of all discovered IdPs
        - Refactor and cleanup code and tests

- CLOUDSTACK-8459:
    * Add HTTP-POST binding to SP metadata
    * Authn requests must use either HTTP POST/Artifact binding

- CLOUDSTACK-8461:
    * Use unspecified x509 cert as a fallback encryption/signing key
      In case a IDP's metadata does not clearly say if their certificates need to be
      used as signing or encryption and we don't find that, fallback to use the
      unspecified key itself.

- CLOUDSTACK-8462:
    * SAML Auth plugin should not do authorization
      This removes logic to create user if they don't exist. This strictly now
      assumes that users have been already created/imported/authorized by admins.
      As per SAML v2.0 spec section 4.1.2, the SP provider should create authn requests using
      either HTTP POST or HTTP Artifact binding to transfer the message through a
      user agent (browser in our case). The use of HTTP Redirect was one of the reasons
      why this plugin failed to work for some IdP servers that enforce this.
    * Add new User Source
      By reusing the source field, we can find if a user has been SAML enabled or not.
      The limitation is that, once say a user is imported by LDAP and then SAML
      enabled - they won't be able to use LDAP for authentication
    * UI should allow users to pass in domain they want to log into, though it is
      optional and needed only when a user has accounts across domains with same
      username and authorized IDP server
    * SAML users need to be authorized before they can authenticate
        - New column entity to track saml entity id for a user
        - Reusing source column to check if user is saml enabled or not
        - Add new source types, saml2 and saml2disabled
        - New table saml_token to solve the issue of multiple users across domains and
          to enforce security by tracking authn token and checking the samlresponse for
          the tokens
        - Implement API: authorizeSamlSso to enable/disable saml authentication for a
          user
        - Stubs to implement saml token flushing/expiry

- CLOUDSTACK-8463:
    * Use username attribute specified in global setting
      Use username attribute defined by admin from a global setting
      In case of encrypted assertion/attributes:
      - Decrypt them
      - Check signature if provided to check authenticity of message using IdP's
        public key and SP's private key
      - Loop through attributes to find the username

- CLOUDSTACK-8538:
    * Add new global config for SAML request sig algorithm

- CLOUDSTACK-8539:
    * Add metadata refresh timer task and token expiring
        - Fix domain path and save it to saml_tokens
        - Expire hour old saml tokens
        - Refresh metadata based on timer task
        - Fix unit tests

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>

This closes #489
2015-06-29 12:25:02 +02:00
..
ui Fix encoding for user account label in header 2015-03-13 12:47:32 +05:30
ui-custom CLOUDSTACK-8457: SAML auth plugin improvements for production usage 2015-06-29 12:25:02 +02:00
accounts.js CLOUDSTACK-8457: SAML auth plugin improvements for production usage 2015-06-29 12:25:02 +02:00
accountsWizard.js CLOUDSTACK-8457: SAML auth plugin improvements for production usage 2015-06-29 12:25:02 +02:00
affinity.js CLOUDSTACK-7779: UI > affinity group action filter > extend scope from local to global. 2014-10-23 16:19:04 -07:00
autoscaler.js Fix Externalization of hard-coded label strings 2014-09-17 13:59:13 -07:00
cloud.core.callbacks.js Format JS 2013-07-18 12:34:20 -04:00
cloudStack.js CLOUDSTACK-8457: SAML auth plugin improvements for production usage 2015-06-29 12:25:02 +02:00
configuration.js CLOUDSTACK-6543 Sort domain lists in UI 2015-04-17 15:18:16 +02:00
dashboard.js CLOUDSTACK-8285: check and update IP capacity states based on allocation state 2015-02-25 16:46:12 +05:30
docs.js CLOUDSTACK-8457: SAML auth plugin improvements for production usage 2015-06-29 12:25:02 +02:00
domains.js CLOUDSTACK-8307: UI not showing all Domains, if there are more than 24 domains then the last domain gets cut off on firefox and IE. Added a flag in treeview widget and based on the flag adding css class which will make overflow as scroll instead of the default auto. 2015-03-09 14:27:23 +05:30
events.js CLOUDSTACK-6543 Sort domain lists in UI 2015-04-17 15:18:16 +02:00
globalSettings.js CLOUDSTACK-7816: UI > Global Settings > add "Baremetal Rack Configuration" section. 2014-10-30 11:27:38 -07:00
installWizard.js api: avoid sending sensitive data in api response 2015-03-11 16:34:11 +05:30
instanceWizard.js CLOUDSTACK-8075: UI > Instances menu > Add Instance > Select template/ISO > "shared" tab > select a shared template, click Next button => fix error "unable to find matched template object". 2014-12-17 10:58:43 -08:00
instances.js CLOUDSTACK-6543 Sort domain lists in UI 2015-04-17 15:18:16 +02:00
lbStickyPolicy.js Fix Externalization of hard-coded label strings 2014-09-17 13:59:13 -07:00
network.js CLOUDSTACK-8231: Fixed UI empty drop-down list for LB rules 2015-05-29 21:19:26 +02:00
plugins.js Plugin API: Support multiple JS includes per plugin 2014-01-27 12:39:36 -08:00
projects.js CLOUDSTACK-6543 Sort domain lists in UI 2015-04-17 15:18:16 +02:00
regions.js CLOUDSTACK-6543 Sort domain lists in UI 2015-04-17 15:18:16 +02:00
sharedFunctions.js CLOUDSTACK-8457: SAML auth plugin improvements for production usage 2015-06-29 12:25:02 +02:00
storage.js CLOUDSTACK-6543 Sort domain lists in UI 2015-04-17 15:18:16 +02:00
system.js CLOUDSTACK-6543 Sort domain lists in UI 2015-04-17 15:18:16 +02:00
templates.js CLOUDSTACK-8056: EN: Miss SC and UK keyboard option for VMware hypervisor when register a template. 2015-01-20 10:22:42 +05:30
vm_snapshots.js UI code cleanup: Fix trailing commas in JS 2013-09-24 11:16:13 -07:00
vpc.js CLOUDSTACK-7915: Remove hard-coded values for Load Balancer algorithms in UI 2014-11-25 11:56:34 +05:30
zoneWizard.js CLOUDSTACK-8094: Fixed incorrect label issue. 2015-03-23 16:44:06 +05:30