Support AD in cluster connection dialog (#7367)

- Use token API to get auth token before using other endpoints. Note this needs server updates before it'll work as expected (will only checkin after verifying this)
- Add auth option in controller UI and plumb through connection save, load, and uses of the controller API
Because the swagger spec is split in 2 created new file for the 2nd swagger spec including token auth endpoints. These come from a running cluster and instructions were updated to reflect this.

New UI Changes:
- Added authentication type field with "Basic" and "Windows Authentication" as the options
- Moved error notifications to the dialog instead of separate notification window. That's the recommended pattern
- Username / password aren't required for Windows Authentication. I couldn't find a way to change required status in form container on switching from Windows => Basic Auth so have error show on clicking OK. 
- Controller URL should use ":" not "," for IP:Port
This commit is contained in:
Kevin Cunnane
2019-09-30 15:59:04 -07:00
committed by GitHub
parent 5327ed84c1
commit 9f065b2b5a
15 changed files with 2244 additions and 107 deletions

View File

@@ -1,5 +1,6 @@
How to update the Swagger-generated API to contact the controller
## BdcRouter API:
1. You need to get the API specification. Long-term you should be able to get from the server,
but for now go to the internal repository and find the checked in SwaggerClient.yaml there.
@@ -9,4 +10,16 @@ but for now go to the internal repository and find the checked in SwaggerClient.
5. Copy this content to apiGenerated.ts
- keep the copyright header and everything above the let defaultBasePath = xyz line,
- Override the rest of the file
6. Format the apiGenerated.ts file so it passes gulp hygiene
6. Format the apiGenerated.ts file so it passes gulp hygiene
## TokenRouter and other APIs:
1. Get the API spec. This is available from a cluster at the address https://<ip>:30080/docs/swagger.json, where <ip> is the controller IP address.
2. Copy the content from there, and add convert from OpenApi 3.0 to Swagger 2.0 so we can use the Typescript-Node client generated by https://editor.swagger.io/.
Various converter tools are online. Alternatively, we might be able to use a different generator that has this client type (e.g. npm package @openapitools/openapi-generator-cli) but some require Java install.
3. Copy the converted Swagger 2.0 spec into https://editor.swagger.io/
4. Choose Generate Client, and choose Typescript-Node as the client to generate
5. This will download a zip file. Open it and copy contents of api.ts
6. Copy this content to tokenApiGenerated.ts
- keep the copyright header and everything above the let defaultBasePath = xyz line,
- Override the rest of the file
7. Format the tokenApiGenerated.ts file so it passes gulp hygiene