Commit Graph

403 Commits

Author SHA1 Message Date
Rohit Yadav f30c52a16c CLOUDSTACK-8562: DB-Backed Dynamic Role Based API Access Checker
This feature allows root administrators to define new roles and associate API
permissions to them.

A limited form of role-based access control for the CloudStack management server
API is provided through a properties file, commands.properties, embedded in the
WAR distribution. Therefore, customizing API permissions requires unpacking the
distribution and modifying this file consistently on all servers. The old system
also does not permit the specification of additional roles.

FS:
https://cwiki.apache.org/confluence/display/CLOUDSTACK/Dynamic+Role+Based+API+Access+Checker+for+CloudStack

DB-Backed Dynamic Role Based API Access Checker for CloudStack brings following
changes, features and use-cases:
- Moves the API access definitions from commands.properties to the mgmt server DB
- Allows defining custom roles (such as a read-only ROOT admin) beyond the
  current set of four (4) roles
- All roles will resolve to one of the four known roles types (Admin, Resource
  Admin, Domain Admin and User) which maintains this association by requiring
  all new defined roles to specify a role type.
- Allows changes to roles and API permissions per role at runtime including additions or
  removal of roles and/or modifications of permissions, without the need
  of restarting management server(s)

Upgrade/installation notes:
- The feature will be enabled by default for new installations, existing
  deployments will continue to use the older static role based api access checker
  with an option to enable this feature
- During fresh installation or upgrade, the upgrade paths will add four default
  roles based on the four default role types
- For ease of migration, at the time of upgrade commands.properties will be used
  to add existing set of permissions to the default roles. cloud.account
  will have a new role_id column which will be populated based on default roles
  as well

Dynamic-roles migration tool: scripts/util/migrate-dynamicroles.py
- Allows admins to migrate to the dynamic role based checker at a future date
- Performs a harder one-way migrate and update
- Migrates rules from existing commands.properties file into db and deprecates it
- Enables an internal hidden switch to enable dynamic role based checker feature

Deprecate commands.properties

- Fixes apidocs and marvin to be independent of commands.properties usage
- Removes bundling of commands.properties in deb/rpm packaging
- Removes file references across codebase

Reviewed-by: John Burwell <john.burwell@shapeblue.com>
QA-by: Boris Stoyanov <boris.stoyanov@shapeblue.com>

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2016-04-25 14:52:02 +05:30
Rohit Yadav 938f1d2a7d CLOUDSTACK-9020: Metrics views for CloudStack UI
Implements following:
- A metrics table widget that is:
  - vertically and horizontally scrollable with pagination/infinite scrolling
  - sortable columns (client side)
  - groupable/collapsible columns
  - alternate row coloring
  - refresh button to refresh views
  - threshold table cell coloring
  - panel/breadcrumb navigation
  - quick view action column
  - translatable labels
- Sortable column for all CloudStack tables (client side)
- Configurable UI pagesize for list API calls, 'default.ui.page.size'
- Metrics views: Zones, Clusters, Hosts, Instances, Storage pools, Volumes
- Resource filtering/navigation: Zones->Clusters->Hosts->Instances->Volumes, Storage Pool->Volumes

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2016-01-20 12:54:06 +01:00
Rohit Yadav 1065661cd5 CLOUDSTACK-8701: Allow SAML users to switch accounts
SAML authorized accounts might be across various domains, this allows for
switching of accounts only in case of SAML authenticated user accounts across
other accounts with the same SAML uid/username.

Moves the previous switch account logic to its own ui-custom module

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-08-14 11:55:14 +05:30
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
Rohit Yadav bc636de122 engine: add upgrade path from 4.5.1 to 4.5.2
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-05-18 22:09:36 +01:00
Laszlo Hornyak 7d8151e5c4 added hungarian to the list of localized languages
Signed-off-by: Laszlo Hornyak <laszlo.hornyak@gmail.com>
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-05-08 17:26:36 +02:00
Laszlo Hornyak a686d2e8b3 added favicon
This closes #225

Signed-off-by: Laszlo Hornyak <laszlo.hornyak@gmail.com>
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
(cherry picked from commit 0347f733dd)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-05-03 15:25:34 +02:00
Rohit Yadav 1172867df0 CLOUDSTACK-8195: Don't break IdP, return metadata XML
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-02-03 16:59:09 +05:30
Rohit Yadav 876c78fe1b CLOUDSTACK-8191: SAML users should have their own accounts
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-02-02 19:56:25 +05:30
Sanjay Tripathi bc4dca71c8 CLOUDSTACK-7969: SC: Win8.1: Key translation fails for some EN-US keyboard keys.
(cherry picked from commit a45ddb514c)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-01-20 11:28:08 +05:30
Brian Federle e7a96fde79 CLOUDSTACK-8075: Front-end support for shared templates/ISOs 2014-12-16 15:16:30 -08:00
Brian Federle 2ee3d4258e CLOUDSTACK-7645: UI: Fix dictionary JSP include order
-Places dictionary JSP includes at top of script includes, to help solve
a potential issue where the dictionary may not always be loaded before
the UI initializes
2014-11-13 15:25:12 -08:00
Brian Federle cfb372a771 CLOUDSTACK-7661: VM wizard: Add keyboard language dropdown
(cherry picked from commit f4326aec82)
2014-10-13 00:33:43 -04:00
vetrivelc 6a11d099cf Fix Externalization of hard-coded label strings
-Split 'dictionary.jsp' into two files -> 'dictionary.jsp' and
'dictionary2.jsp' -- this is due to JSP file constraints as the
localization object is getting quite long

-Per change above, 'dictionary' object is now split into an additonal
'dictionary2' object, which is merged with the main dict object on page
load

-All new dictionary mappings should be added to 'dictionary2' now.

Signed-off-by: Brian Federle <brian.federle@citrix.com>
2014-09-17 13:59:13 -07:00
seif 9d776f4f2c GUI changes to leverage a new control for storage tags 2014-08-12 14:41:22 -06:00
Brian Federle a82a1299ec WIP: Instance wizard UI: Support multi-disk offerings
Adds front-end support to instance wizard UI for service offerings
supporting multiple disks.

The UI changes will show if a list 'multipleDisks: []' is passed with
the disk offering data options.
2014-04-02 16:28:15 -07:00
Gabor Apati-Nagy 883d7f17f7 Value of Global parameter "custom.diskoffering.size.min" is not reflected in UI during new instance creation.
Added fields to /api and /server classes for CustomDiskOfferingMinSize
to be available in CapabilitiesResponse. Fixed UI code in Instance
Wizard to have this config value as the minimum selectable option when
we are in custom disk size mode.
2014-04-01 10:57:36 -07:00
Mike Tutkowski 312ec6de6c CLOUDSTACK-6170 (fixing a GUI formatting issue) 2014-03-25 12:44:31 -06:00
Brian Federle 86b02e65eb CLOUDSTACK-6227: Fix IE9 instance wizard
Fixes HTML incompatibility causing rendering issues in IE9 when viewing
instance wizard->network step
2014-03-24 10:01:29 -07:00
Jessica Wang dadaf85860 CLOUDSTACK-6246: UI > Infrastructure > SSL Certificate > update (1) mouse-over hint of SSL Certificate button. (2) description in SSL Certificate dialog. 2014-03-17 15:41:48 -07:00
Mike Tutkowski d55c4dd804 CLOUDSTACK-6170 2014-03-14 23:47:20 -06:00
Mike Tutkowski c427e8db1c CLOUDSTACK-6170 2014-03-07 15:38:50 -07:00
Brian Federle 0d688fec73 VM wizard: Add specify IP field when in VPC flow 2014-03-03 10:52:53 -08:00
Brian Federle d896aedccd LDAP Account Wizard: cleanup layout
-Fix table column sizing
-Add ellipses/alt tags to fields to help overflow
2014-02-28 08:36:25 -08:00
Milamber cb7b1dc276 Add Dutch (Netherlands, Polish languages in Web UI Change Japanese code (ja -> ja_JP) Update transifex sync config
Conflicts:
	client/WEB-INF/classes/resources/messages_es.properties
	client/WEB-INF/classes/resources/messages_pt_BR.properties
2014-01-17 11:15:09 +00:00
Jessica Wang 5fb80f90f0 CLOUDSTACK-4738: UI > VM Wizard > select compute offering step > make Number of CPU Cores/CPU/Memory field required when selected compute offering is customized. 2013-12-18 14:49:24 -08:00
Rajani Karuturi fdf7639eb8 Fixed some html validation errors
language tag in script is deprecated. used type
<script> tag after </html> is invalid. moved the localized messages dictionary inside html body.
2013-11-05 10:23:32 -08:00
Brian Federle 16bb286729 Sockets: new UI flow
-Removes socket display from the main infra. dashboard and onto a
 separate page. This is due to performance issues with the API calls
 that query each hypervisor's socket data.

-Convert socket display to a list view, for simplicity/consistency.
2013-10-31 12:03:20 -07:00
Brian Federle 25d4333d45 Rename 'socket info' title to 'hypervisors'
Rename 'socket info' title to 'hypervisors' to make it more generic, as
the dashboard section contains hypervisor host counts which are useful
in other contexts.
2013-10-30 11:37:54 -07:00
Brian Federle 2189da6c72 CLOUDSTACK-4758: Make root disk size a text field 2013-10-30 11:20:02 -07:00
Brian Federle bed42deb88 CLOUDSTACK-4908: UI for report CPU sockets
-Adds socket info for hypervisors on infrastructure chart

-Displays # of sockets, and # of hosts

-Currently only dummy data set to 0 for all info
2013-10-29 14:16:25 -07:00
Brian Federle f0a8aa7f5e CLOUDSTACK-4738: VM wizard: Add custom fields for compute offering 2013-10-29 13:29:13 -07:00
Jessica Wang a1be4fffe5 UI > Instance Wizard > Step 4 > correct label from "Data Disk Offering" to "Disk Offering" since selected disk offering here refers to root disk volume when selected template is of ISO format, data disk volume otherwise. 2013-10-24 11:29:47 -07:00
Brian Federle 43b18025e3 CLOUDSTACK-4758: Add 'root disk size' field
Add 'root disk size' slider to instance wizard UI, under select
template/iso, if the selected template's size is able to be customized.
2013-10-22 11:45:18 -07:00
Brian Federle b04b6a0fbe Whitespace cleanup on index.jsp 2013-10-22 10:44:15 -07:00
Brian Federle ae7b0c50db Cleanup formatting on index.jsp, to comply with indentation standards 2013-10-22 10:43:15 -07:00
Jessica Wang 343ca473e7 CLOUDSTACK-4642: UI > storage > volume > recurring snapshot > timezone dropdown > remove hardcoding dropdown option from index.jsp since dropdown option is generated on the fly from timezoneMap variable in JavaScript file. 2013-09-10 16:21:02 -07:00
Ian Duffy bdba0ddeed Bring up to date with master 2013-08-31 00:25:48 +01:00
Brian Federle 4dafb54884 CLOUDSTACK-4124: Add affinity group list to review step 2013-08-07 16:41:33 -07:00
Ian Duffy ec064b3077 New LDAP UI
Signed-off-by: Sebastien Goasguen <runseb@gmail.com>
2013-07-29 05:58:00 -04:00
Ian Duffy eaa4143371 Merge LDAPPlugin
Signed-off-by: Abhinandan Prateek <aprateek@apache.org>
2013-07-25 17:54:52 +05:30
Brian Federle dfdbf20b67 Add disallowSpecialCharacters to some fields 2013-07-23 15:12:58 -07:00
Brian Federle 3eeca55c76 Remove zone filter drop-down 2013-06-14 12:26:00 -07:00
Hiroaki KAWAI 8744d1cdf6 CLOUDSTACK-2406: fix UI strings
Japanese properties file was broken, fixed manually.
We need to let the servlet container the encoding to use.

Signed-off-by: Hiroaki KAWAI <kawai@stratosphere.co.jp>
2013-05-27 15:52:23 +09:00
Nitin Mehta c11dbad9c9 merge master 2013-05-11 15:28:43 +05:30
Milamber 1d493acfcc CLOUDSTACK-2138 : add ca, de_DE, it_IT ja, koçKR,nb_NO pt_BR, ru_RU resource files for UI with ASCII with unicode encoding. (Merging for 4.1/Transifex, sync with transifex), add some languages in combo list on login page on UI 2013-04-25 00:22:46 +00:00
Brian Federle e04430302d Merge branch 'master' into ui-mixed-zone-management 2013-04-18 15:18:43 -07:00
Brian Federle 6babaf9616 Add UI 'module' API
Add a variant to a plugin, called a 'module.' It is designed for
features that are build-in to the standard UI (i.e., not installed
dynamically), but can still utilize the modular nature of UI
plugins. It works exactly the same way as a plugin, except:

-Modules are added to modules/ folder
-Modules are registered in modules/modules.js
-No config.js (no need for metadata, since they are built-in features)
- /ui/modules/ folder will not be touched by the build system, so any modules
 are committed directly to the ui/ folder. In other words, modules are
 not installed automatically.
2013-04-18 12:52:55 -07:00
Brian Federle fca7b3ef22 Rename widget 'plugins' to 'pluginListing'
For better clarity on its function, rename the 'plugins' widget to 'pluginListing,'
as it does not handle the actual plugin logic.
2013-04-18 10:49:45 -07:00
Brian Federle 5d05e49fa6 Merge branch 'master' into ui-mixed-zone-management 2013-04-16 11:45:05 -07:00