Confusing in GetAppCredentials

Hi, I am confused in GetAppCredentials workflow for assignment 1.

1 Like

Hi @balkishan, can you specify at which step the GetAppCredentials workflow is confusing?

Hi,

The GetAppCredentials workflow is used to get the credentials for ACME log in, like from Orchestrator or from windows credentials manager

let us know if this was required info or more information is needed on this topic

Regrads,
Pavan H

1 Like

Hi,

the following post may be useful understanding the idea behind this workflow.

Cheers

1 Like

I am fetching from the orchestrator for assignment 1 as there is a condition that if not locally found fetch from local. so how to store locally using window credentials.

How to store credentials in window credentials vault and fetch from studio?

Hi,
Use add credential activity,
Add your user name and password
Persistance type as local computer
Target will be the name given to your credentials
Then use get secure credentials activity to get the credentials
Add the target as the name given in target of add credential activity.

Take the user name as string and pasword as secure string

Let us know if this works

Regards,
Pavan H

Hi
Please refer the images for your reference

Please refer the link below for more info

Regards,
Pavan H

1 Like

you can manually add credentials locally by searching ‘windows credentials manager’ on your computer, and adding a new generic credential. call it something like RobotACME, and give it the username and password for your ACME account. (you should actually feed the credential name in using the config file, but maybe thats a discussion for another time…)

then in uipath, put the GetAppCredentials into your workflow and import/edit the arguments. in the ‘in’ argument you will need to put the name you gave your credential in windows credentials manager, and the output arguments will be the username and password you just put into the credentials ‘vault’. store these outputs in variables and feed them into another component which will use them to login to the application

Is it the right way to storing credentials in window manager

@balkishan : Try to look into the below url

Thanks

I am not talking about the login orchestrator credentials. I am asking about the ACME login credentials to login to the site for assignment 1 bro. Hope you understand.

@balkishan: Yes of course you can store ACME application credentials in orchestrator from Assets Tab.

Use Get Credential activity and pass the respective asset name to fetch the values.

Thanks

There I already stored but I want to store in window also then how to store and how to fetch from studio.

@balkishan : How to work with Windows Credentials

Thanks

I am trying to feed the credentials from my config file, but I’m not sure how to connect that file with my main workflow. The GetAppCredentials xaml also seems to be missing activities, which I’m not sure how best to replace/fix in order to utilize that xaml in my main. Could you provide any insight into how to best accomplish this (feed credentials from config file to GetAppCredentials xaml framework file then connect to that xaml from my main workflow to successfully login to ACME?

I’ve reveiwed many posts, and it seems I’m going in circles with people suggesting using Orchestrator, which I believe is not allowed for this exercise (1 in the Level 3 Advanced training).

Thank you!
Shelby

1 Like

Hi follow the ReFramework There is an workflow called InitSetting please use that to read the credentials file. Then you have use the GetCredentials workflow.

Hi @shelbypons, I understand why you may be getting conflicting messages - so hopefully I can make it a little clearer for you :slight_smile:

The GetAppCredentials workflow is used with the ReFramework, and will actually retrieve credentials from EITHER Orchestrator, OR Windows Credentials Manager, which is the credentials management system in built to windows. It is also important to understand what the workflow does, and therefore how you should use it:

The workflow takes an input argument of a credential name, which usually you would have stored in the Config file, but it could be something like ‘SAPCredential’.

  • First it will try to ask orchestrator if there is a credential available by that name, and if there is, it will retrieve it.
  • If it can’t get the credential from Orchestrator, because for instance you are not connected to Orchestrator, then it will ask Windows Credentials Manager if there is a Credential of that name available under the user profile, and if there is it will retrieve it.
  • If it cant find the credential in Orchestrator OR Windows Credentials Manager, then a dialogue box will appear on screen, asking you to input the Username and Password for that credential name, which it will then store in Windows Credentials Manager for future use (i.e. this will only happen on the first run).
  • Finally it will output the Username and Password it has retrieved, either from Orchestrator, WCM or you, to the output arguments for use in a Login component.

I hope this makes sense, let me know if not!

4 Likes

Hi @Djh

Thank you for the clear explanation! That definitely helps.

From analyzing the try/catch activity, I figured that the GetAppCredentials workflow would check Orchestrator and then move onto Windows Credentials Manager, but I’m still fixated on the Data\Config file.

My current (rough) understanding of the Config file and InitAllSettings wf usage:
The information stored in the Config file on the Assets sheet should just be one name (e.g., SAPCredential) which represents both the username and password for any particular login. The actual username and password are stored in either Orchestrator or Windows Credentials Manager. InitAllSettings accesses the Config file, reads the credential names, finds the actual UN/pw credentials from Orchestrator or Win Credential Manager, then stores that small dictionary of project-specific credentials as an out argument, which is passed to other workflows to use.

Can you connect straight from the InitAllSettings wf to the main wf to pass the credentials variable? Would the point of this be to just have a smaller dictionary to search from (i.e., the small one defined by InitAllSettings vs ALL credentials in Orchestrator or Windows Manager)?

Is there a case where you would use both InitAllSettings AND GetAppCredentials, or would Get only be used when you’re not referencing the Config file?

Is the Config file only sometimes used for human organization (e.g., “Ok, we have a bunch of credentials in Windows Manager, but only these 3 relate to the ACME project”). Since you COULD just specify the credential name within the Get Credentials activity within the main workflow.

Please feel free to correct me. I appreciate any insight!

Thank you!
Shelby

Hi @shelbypons - apologies for the delay, hopefully this will help…

Credentials:
Credentials stored in either Windows Credentials manager or Orchestrator will have three values - Username, Password and Name, and it is the name which the Robot uses to access those specific credentials, and this is what you feed INTO the GetAppCredentials component, to then get OUT the Username and Password for onward processing.

Example: In Windows Credentials Manager we have two credentials stored to Login to a SAP System -

Name: Robot1
Username: User1
Pword: P1

and

Name: Robot2
Username: User2
Pword: P2

So in order to retrieve either of these credentials we need to feed into the GetAppCredentials Workflow either “Robot1” or Robot2", but if we hard code either one of them, that means that if we wanted to change from Robot1 to Robot2, we would need to actually change the code of the automation itself, which is usually not advisable…

Config file and Dictionary:
The Excel Config file contains values which are fed into the automation at the point it is read, one of the main reasons for this is so that you can change these values without having to change the underlying code of the automation.
When the Robot reads the Config file it reads the first two columns of the sheets and for each row it will create a dictionary entry where the ‘Name’ f the entry is the value in the first column, and the ‘Value’ of the dictionary item is the value in the second column. This means that you end up with a Dictionary (Config) which contains values which can be referenced by their name. so we could for example have a dictionary item called “SAPCredential” which has a value of Robot1, and this value corresponds to the Name of one of the sets of credentials in Windows Credentials Manager.

So to follow through with our example, instead of putting either “Robot1” or “Robot2” directly into the input argument of the GetAppCredential workflow, you would instead put - Config(“SAPCredential”).tostring. This would mean that it would feed in the value from the Dictionary, as a string (because of the .tostring part) - which means inputting “Robot1”, the value in the Config File Excel which has been pulled into the dictionary nd then into this workflow. GetAppCredentials would then output the username and password for Robot1. If you then wanted to change it so the robot used the credentials stored under Robot2, you would just have to change the value in the Config Excel File, not the actual automation.

As a final note - The Config Dictionary is a vey powerful tool to move information round your automations, as it contains any data from the Excel Config, so if you pass the Config Dictionary into any of your workflows, you then have access to all of that information.

Sorry for the long reply!