web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :
Power Platform Community / Forums / Power Automate / Get secure Credentials
Power Automate
Unanswered

Get secure Credentials

(2) ShareShare
ReportReport
Posted on by 25

Hello everyone,

 

I been searching on the tool, but i cant find any actions to make me get the credencials from the windows credentials, or from a cloud for example.

 

Can i get the credentials of the costumer from a secure way and not write them to the tool?

 

Any help is welcome !

 

Thanks !

  • Community Power Platform Member Profile Picture
    Microsoft Employee on at

    Hi @Godlees ,

     

    You can use input variable and change data type to sensitive text

     

    Hope this helps 🙂

    sakula1996_0-1615581911638.png

     

    Thanks,

    -Sachin

     

  • burque505 Profile Picture
    398 on at

    @Godlees, you might be able to adapt my Robin code for using Windows credentials with Python. 

    I apologize for not having more time at the moment, but I will try to adapt it for PAD myself in the next day or so. As a newer version Robin underpins PAD, I'm hoping it will not be difficult.

    Regards,

    burque505

  • burque505 Profile Picture
    398 on at

    @Godlees, this post may help you if you have Python 3 installed. If not, I am going to try to adapt it to Python 2 so no DOS command is required. I prefer Python 3, but that may not be an option for all.

    Prerequisite: User must have a Generic Credential installed for Box.com

     

    TASK: Use a Generic Credential to log into Box.com at 'https://account.box.com/login/'. Populate the email and password fields, click submit.

     

    (You will of course need to create your own appmask by creating and selecting UI Elements.)

     

    SCREENSHOT OF FLOW:

    BoxCredsFlow.png

    Shots of flow, step by step, except for launching Chrome and navigating to 'https://account.box.com/login/':

    Set Python path:

    setpypath.png

    Set Python script path:

    setscriptpath.png

    Run Python from the DOS prompt, storing its output into '%PythonOutput%'.

    doscommand.png

    Split the output with custom delimiter ',' into CredList.

    split_python_output.png

    Set email to CredList[0]:

    credlist0.png

    Set password to CredList[1]:

    credlist1.png

    Fill in email field:

    fill_email.png

    Click 'Next':

    click_next.png

    Fill in the password with CredList[1]:

    credlist1.png

    Click 'Submit':

    click_submit.png

     

    Here is the content of the Python script, only slightly modified from that of mrh1997's script. 

     

     

     

    #!python3
    """
    Access windows credentials
    """
    from typing import Tuple
    import ctypes as CT
    import ctypes.wintypes as WT
    
    CRED_TYPE_GENERIC = 0x01
    
    LPBYTE = CT.POINTER(WT.BYTE)
    LPWSTR = WT.LPWSTR
    LPCWSTR = WT.LPWSTR
    class CREDENTIAL_ATTRIBUTE(CT.Structure):
     _fields_ = [
     ('Keyword', LPWSTR),
     ('Flags', WT.DWORD),
     ('ValueSize', WT.DWORD),
     ('Value', LPBYTE)]
    PCREDENTIAL_ATTRIBUTE = CT.POINTER(CREDENTIAL_ATTRIBUTE)
    class CREDENTIAL(CT.Structure):
     _fields_ = [
     ('Flags', WT.DWORD),
     ('Type', WT.DWORD),
     ('TargetName', LPWSTR),
     ('Comment', LPWSTR),
     ('LastWritten', WT.FILETIME),
     ('CredentialBlobSize', WT.DWORD),
     ('CredentialBlob', LPBYTE),
     ('Persist', WT.DWORD),
     ('AttributeCount', WT.DWORD),
     ('Attributes', PCREDENTIAL_ATTRIBUTE),
     ('TargetAlias', LPWSTR),
     ('UserName', LPWSTR)]
    PCREDENTIAL = CT.POINTER(CREDENTIAL)
    
    advapi32 = CT.WinDLL('Advapi32.dll')
    advapi32.CredReadA.restype = WT.BOOL
    advapi32.CredReadA.argtypes = [LPCWSTR, WT.DWORD, WT.DWORD, CT.POINTER(PCREDENTIAL)]
    
    
    def GetGenericCredential(name:str) -> Tuple[str, str]:
     """
     Returns a Tuple of Name and Password of a Generic Windows Credential
     Uses bytes in Py3 and str in Py2 for url, name and password.
     """
     cred_ptr = PCREDENTIAL()
     if advapi32.CredReadW(name, CRED_TYPE_GENERIC, 0, CT.byref(cred_ptr)):
     username = cred_ptr.contents.UserName
     cred_blob = cred_ptr.contents.CredentialBlob
     cred_blob_size = cred_ptr.contents.CredentialBlobSize
     cred_str = CT.string_at(cred_blob, cred_blob_size)
     password = cred_str.decode('utf-16le', errors='ignore')
     advapi32.CredFree(cred_ptr)
     return username, password
     else:
     raise IOError("Failure reading credential")
    
    
    def main():
     name, pwd = GetGenericCredential('https://account.box.com/login/')
     print(name + ',' + pwd)
    
    
    if __name__ == '__main__':
     main()

     

     

     

    For the curious, here is the content of my 'script.robin' (edited to remove my username):

     

     

     

    IMPORT 'C:\\Users\\You\\AppData\\Local\\Microsoft\\Power Automate Desktop\\Console\\Workspace\\0f5103bd-6a64-4fab-8e98-1100ab7e4517\\controlRepo.appmask' AS appmask
    IMPORT 'C:\\Users\\You\\AppData\\Local\\Microsoft\\Power Automate Desktop\\Console\\Workspace\\0f5103bd-6a64-4fab-8e98-1100ab7e4517\\imageRepo.imgrepo' AS imgrepo
    
    
    WebAutomation.LaunchChrome Url: $'''https://account.box.com/login''' WindowState: WebAutomation.BrowserWindowState.Maximized ClearCache: False ClearCookies: False BrowserInstance=> Browser
    SET pythonpath TO $'''\"C:\\Program Files\\Python37\\python.exe\"'''
    SET pyscriptpath TO $'''C:\\Users\\HP6300\\Documents\\PAD\\wincred\\box.py'''
    System.RunDOSCommand DOSCommandOrApplication: $'''%pythonpath% %pyscriptpath%''' StandardOutput=> PythonOutput StandardError=> PythonErrorOutput ExitCode=> PythonExitCode
    Text.SplitWithDelimiter Text: PythonOutput CustomDelimiter: $''',''' IsRegEx: False Result=> CredList
    SET email TO CredList[0]
    SET password TO CredList[1]
    WebAutomation.FormFilling.PopulateTextFieldCloseDialog BrowserInstance: Browser Control: appmask['Web Page \'https://account.box.com/login\'']['<input:text> \'login-email\''] Text: email EmulateTyping: True UnfocusAfterPopulate: False
    WebAutomation.Click BrowserInstance: Browser Control: appmask['Web Page \'https://account.box.com/login\'']['<button> \'login-submit\'']
    WebAutomation.FormFilling.PopulateTextField BrowserInstance: Browser Control: appmask['Web Page \'https://account.box.com/login?redirect_url=%2F\'']['<input:password> \'password-login\''] Text: password EmulateTyping: True UnfocusAfterPopulate: False
    WebAutomation.Click BrowserInstance: Browser Control: appmask['Web Page \'https://account.box.com/login?redirect_url=%2F\'']['<button> \'login-submit-password\'']

     

     

    Regards,

    burque505

     

  • Godlees Profile Picture
    25 on at

    Hello @Anonymous , sorry for answer today, in this case. The client need to put your credentials every time of the bot run?

     

    I dont like for that reason, i need something where the bot get the credentials and dont interact with the client or someone.

  • Godlees Profile Picture
    25 on at

    Hello @burque505 thank you so much for answer.

     

    The only i dont understand is why you use box? and what credentials i have to store in that cloud?

     

    Thanks !

  • burque505 Profile Picture
    398 on at

    Hi @Godlees, the use of Box is only intended as an example. You can substitute any site that requires a username and password.

     

    The credentials are stored on the user's computer using Windows Credential Manager so the bot can access them without requiring the user to enter them.

     

    Regards,

    burque505

  • Community Power Platform Member Profile Picture
    Microsoft Employee on at

    Hi @Godlees ,

     

    You might already figured out the issue.

    But, here is something I got:

    If you're using "Populate text field on web page" action or "Populate text field in window" action or "Send Keys" action, you can use sensitive text input by clicking on the little box icon towards top left corner.

     

     

    Hope this helps 🙂

     

    sakula1996_0-1616006915746.png

     

    sakula1996_1-1616006989798.png

     

     

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Season of Sharing Community Challenge Winners!

Congratulations to our community stars!

Kudos to our 2025 Community Spotlight Honorees

Expanding mentorship, skilling, and AI innovation

Leaderboard > Power Automate

#1
Mohsin Ali Profile Picture

Mohsin Ali 426

#2
11manish Profile Picture

11manish 349 Super User 2026 Season 2

#3
M Bilal Khan Profile Picture

M Bilal Khan 308

Last 30 days Overall leaderboard