Commit 9a14dd385d34a194bd8fd26ccf5922464eae24ce
Merge branch 'master' of github.com:thingsboard/thingsboard into develop/3.0
Showing
2 changed files
with
29 additions
and
11 deletions
@@ -100,34 +100,52 @@ security: | @@ -100,34 +100,52 @@ security: | ||
100 | basic: | 100 | basic: |
101 | enabled: "${SECURITY_BASIC_ENABLED:false}" | 101 | enabled: "${SECURITY_BASIC_ENABLED:false}" |
102 | oauth2: | 102 | oauth2: |
103 | + # Enable/disable OAuth 2 login functionality | ||
104 | + # For details please refer to https://thingsboard.io/docs/user-guide/oauth-2-support/ | ||
103 | enabled: "${SECURITY_OAUTH2_ENABLED:false}" | 105 | enabled: "${SECURITY_OAUTH2_ENABLED:false}" |
106 | + # Redirect URL where access code from external user management system will be processed | ||
104 | loginProcessingUrl: "${SECURITY_OAUTH2_LOGIN_PROCESSING_URL:/login/oauth2/code/}" | 107 | loginProcessingUrl: "${SECURITY_OAUTH2_LOGIN_PROCESSING_URL:/login/oauth2/code/}" |
108 | + # List of SSO clients | ||
105 | clients: | 109 | clients: |
106 | default: | 110 | default: |
107 | - loginButtonLabel: "${SECURITY_OAUTH2_DEFAULT_LOGIN_BUTTON_LABEL:Default}" # Label that going to be show on login screen | ||
108 | - loginButtonIcon: "${SECURITY_OAUTH2_DEFAULT_LOGIN_BUTTON_ICON:}" # Icon that going to be show on login screen. Material design icon ID (https://material.angularjs.org/latest/api/directive/mdIcon) | 111 | + # Label that going to be show on login button - 'Login with {loginButtonLabel}' |
112 | + loginButtonLabel: "${SECURITY_OAUTH2_DEFAULT_LOGIN_BUTTON_LABEL:Default}" | ||
113 | + # Icon that going to be show on login button. Material design icon ID (https://material.angularjs.org/latest/api/directive/mdIcon) | ||
114 | + loginButtonIcon: "${SECURITY_OAUTH2_DEFAULT_LOGIN_BUTTON_ICON:}" | ||
109 | clientName: "${SECURITY_OAUTH2_DEFAULT_CLIENT_NAME:ClientName}" | 115 | clientName: "${SECURITY_OAUTH2_DEFAULT_CLIENT_NAME:ClientName}" |
110 | clientId: "${SECURITY_OAUTH2_DEFAULT_CLIENT_ID:}" | 116 | clientId: "${SECURITY_OAUTH2_DEFAULT_CLIENT_ID:}" |
111 | clientSecret: "${SECURITY_OAUTH2_DEFAULT_CLIENT_SECRET:}" | 117 | clientSecret: "${SECURITY_OAUTH2_DEFAULT_CLIENT_SECRET:}" |
112 | accessTokenUri: "${SECURITY_OAUTH2_DEFAULT_ACCESS_TOKEN_URI:}" | 118 | accessTokenUri: "${SECURITY_OAUTH2_DEFAULT_ACCESS_TOKEN_URI:}" |
113 | authorizationUri: "${SECURITY_OAUTH2_DEFAULT_AUTHORIZATION_URI:}" | 119 | authorizationUri: "${SECURITY_OAUTH2_DEFAULT_AUTHORIZATION_URI:}" |
114 | scope: "${SECURITY_OAUTH2_DEFAULT_SCOPE:}" | 120 | scope: "${SECURITY_OAUTH2_DEFAULT_SCOPE:}" |
115 | - redirectUriTemplate: "${SECURITY_OAUTH2_DEFAULT_REDIRECT_URI_TEMPLATE:http://localhost:8080/login/oauth2/code/}" # Must be in sync with security.oauth2.loginProcessingUrl | 121 | + # Redirect URL that must be in sync with 'security.oauth2.loginProcessingUrl', but domain name added |
122 | + redirectUriTemplate: "${SECURITY_OAUTH2_DEFAULT_REDIRECT_URI_TEMPLATE:http://localhost:8080/login/oauth2/code/}" | ||
116 | jwkSetUri: "${SECURITY_OAUTH2_DEFAULT_JWK_SET_URI:}" | 123 | jwkSetUri: "${SECURITY_OAUTH2_DEFAULT_JWK_SET_URI:}" |
117 | - authorizationGrantType: "${SECURITY_OAUTH2_DEFAULT_AUTHORIZATION_GRANT_TYPE:authorization_code}" # authorization_code, implicit, refresh_token or client_credentials | 124 | + # 'authorization_code', 'implicit', 'refresh_token' or 'client_credentials' |
125 | + authorizationGrantType: "${SECURITY_OAUTH2_DEFAULT_AUTHORIZATION_GRANT_TYPE:authorization_code}" | ||
118 | clientAuthenticationMethod: "${SECURITY_OAUTH2_DEFAULT_CLIENT_AUTHENTICATION_METHOD:post}" # basic or post | 126 | clientAuthenticationMethod: "${SECURITY_OAUTH2_DEFAULT_CLIENT_AUTHENTICATION_METHOD:post}" # basic or post |
119 | userInfoUri: "${SECURITY_OAUTH2_DEFAULT_USER_INFO_URI:}" | 127 | userInfoUri: "${SECURITY_OAUTH2_DEFAULT_USER_INFO_URI:}" |
120 | userNameAttributeName: "${SECURITY_OAUTH2_DEFAULT_USER_NAME_ATTRIBUTE_NAME:email}" | 128 | userNameAttributeName: "${SECURITY_OAUTH2_DEFAULT_USER_NAME_ATTRIBUTE_NAME:email}" |
121 | mapperConfig: | 129 | mapperConfig: |
122 | - type: "${SECURITY_OAUTH2_DEFAULT_MAPPER_TYPE:basic}" # basic or custom | 130 | + # Mapper type of converter from external user into internal - 'basic' or 'custom' |
131 | + type: "${SECURITY_OAUTH2_DEFAULT_MAPPER_TYPE:basic}" | ||
123 | basic: | 132 | basic: |
124 | - allowUserCreation: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_ALLOW_USER_CREATION:true}" # Allows to create user if it not exists | ||
125 | - emailAttributeKey: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_EMAIL_ATTRIBUTE_KEY:email}" # Attribute key to use as email for the user | 133 | + # Allows to create user if it not exists |
134 | + allowUserCreation: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_ALLOW_USER_CREATION:true}" | ||
135 | + # Key from attributes of external user object to use as email | ||
136 | + emailAttributeKey: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_EMAIL_ATTRIBUTE_KEY:email}" | ||
126 | firstNameAttributeKey: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_FIRST_NAME_ATTRIBUTE_KEY:}" | 137 | firstNameAttributeKey: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_FIRST_NAME_ATTRIBUTE_KEY:}" |
127 | lastNameAttributeKey: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_LAST_NAME_ATTRIBUTE_KEY:}" | 138 | lastNameAttributeKey: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_LAST_NAME_ATTRIBUTE_KEY:}" |
128 | - tenantNameStrategy: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_TENANT_NAME_STRATEGY:domain}" # domain, email or custom | ||
129 | - tenantNamePattern: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_TENANT_NAME_PATTERN:}" # %{attribute_key} as placeholder for attributes value by key | ||
130 | - customerNamePattern: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_CUSTOMER_NAME_PATTERN:}" # %{attribute_key} as placeholder for attributes value by key | 139 | + # Strategy for generating Tenant from external user object - 'domain', 'email' or 'custom' |
140 | + # 'domain' - name of the Tenant will be extracted as domain from the email of the user | ||
141 | + # 'email' - name of the Tenant will email of the user | ||
142 | + # 'custom' - please configure 'tenantNamePattern' for custom mapping | ||
143 | + tenantNameStrategy: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_TENANT_NAME_STRATEGY:domain}" | ||
144 | + # %{attribute_key} as placeholder for attribute value of attributes of external user object | ||
145 | + tenantNamePattern: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_TENANT_NAME_PATTERN:}" | ||
146 | + # If this field is not empty, user will be created as a user under defined Customer | ||
147 | + # %{attribute_key} as placeholder for attribute value of attributes of external user object | ||
148 | + customerNamePattern: "${SECURITY_OAUTH2_DEFAULT_MAPPER_BASIC_CUSTOMER_NAME_PATTERN:}" | ||
131 | custom: | 149 | custom: |
132 | url: "${SECURITY_OAUTH2_DEFAULT_MAPPER_CUSTOM_URL:}" | 150 | url: "${SECURITY_OAUTH2_DEFAULT_MAPPER_CUSTOM_URL:}" |
133 | username: "${SECURITY_OAUTH2_DEFAULT_MAPPER_CUSTOM_USERNAME:}" | 151 | username: "${SECURITY_OAUTH2_DEFAULT_MAPPER_CUSTOM_USERNAME:}" |
@@ -94,7 +94,7 @@ export default class TbGoogleMap { | @@ -94,7 +94,7 @@ export default class TbGoogleMap { | ||
94 | window[this.initMapFunctionName] = function() { // eslint-disable-line no-undef, angular/window-service | 94 | window[this.initMapFunctionName] = function() { // eslint-disable-line no-undef, angular/window-service |
95 | lazyLoad.load([ // eslint-disable-line no-undef | 95 | lazyLoad.load([ // eslint-disable-line no-undef |
96 | { type: 'js', path: 'https://unpkg.com/@google/markerwithlabel@1.2.3/src/markerwithlabel.js' }, | 96 | { type: 'js', path: 'https://unpkg.com/@google/markerwithlabel@1.2.3/src/markerwithlabel.js' }, |
97 | - { type: 'js', path: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/markerclusterer.js' } | 97 | + { type: 'js', path: 'https://unpkg.com/@google/markerclustererplus@4.0.1/dist/markerclustererplus.min.js' } |
98 | ]).then( | 98 | ]).then( |
99 | function success() { | 99 | function success() { |
100 | gmGlobals.gmApiKeys[tbMap.apiKey].loaded = true; | 100 | gmGlobals.gmApiKeys[tbMap.apiKey].loaded = true; |