Chapter 39 Secure Passwords in R
You will, not infrequently, need to use passwords to access secure or PHI protected data from databases or cloud storage or even password-protected excel files.
It is important to sort out how to use passwords securely. You do not want to type out your password in a script. You can store passwords securely in variables on your computer for use later. If they are in a script, someone else can find them, especially if you are using version control and pushing code to Github.
You can use the .gitignore file to make sure that git ignores certain files to back up to the repository, especially large files (graphics, etc. that can be regenerated), but it is better to avoid putting any passwords into your code at all.
Each major computer operating system (Windows, MacOS, Linux) has its own secure credential store. You may know this as the ‘Credential Store’ on Windows, the ‘Keychain’ on MacOS, or the “Secret Service API’ on Linux. Each of these is a secure, password-protected store of passwords that you use for different websites for browser access.
The {keyring} package in R gives you a single interface to all of these secure credential stores. Make sure you have this installed with
install.packages('keyring')
after you call library(keyring)
, you can store one or more secret passwords (keys). A key is defined by a service name (i.e. website) and a password. Once defined, this key persists in the keyring store of your operating system, and is only accessible to someone with the password to your computer.
You can define a key once (interactively, or in an R script), and it will persist for use in future R sessions.
Let’s see your current list of secrets. Run the code chunk below.
## service
## 1 Apple ID Authentication
## 2 com.apple.scopedbookmarksagent.xpc
## 3 ProtectedCloudStorage
## 4 ProtectedCloudStoragePublic
## 5 com.apple.cloudd.deviceIdentifier.Production
## 6 com.apple.cloudd.deviceIdentifier.Production
## 7 com.apple.cloudd.deviceIdentifier.Production
## 8 Safari Session State Key
## 9 PersonalFormsAutoFillDatabase
## 10 AirPlay Client Identity
## 11 AirPlay Client Peer
## 12 Call History User Data Key
## 13 com.apple.linkedin.oauth-token-nosync
## 14 Extended Preferences
## 15 fmfd-daemon-aps-token
## 16 iPhone Backup
## 17 com.apple.ids
## 18 com.apple.cloudd.deviceIdentifier.Production
## 19 com.apple.gs.icloud.auth.com.apple.account.AppleIDAuthentication.token-expiry-date
## 20 com.apple.gs.appleid.auth.com.apple.account.AppleIDAuthentication.token-expiry-date
## 21
## 22 MSOpenTech.ADAL.1|aHR0cHM6Ly9sb2dpbi53aW5kb3dzLm5ldC9jb21tb24|aHR0cHM6Ly9vZmZpY2VhcHBzLmxpdmUuY29t|ZDM1OTBlZDYtNTJiMy00MTAyLWFlZmYtYWFkMjI5MmFiMDFj
## 23 AirPort Base Station
## 24 com.apple.iMovieApp: Google Plus OAuth2
## 25 MSOpenTech.ADAL.1|aHR0cHM6Ly9sb2dpbi53aW5kb3dzLm5ldC9jb21tb24|CC3513A0-0E69-4B4D-97FC-DFB6C91EE132|ZDM1OTBlZDYtNTJiMy00MTAyLWFlZmYtYWFkMjI5MmFiMDFj
## 26 MSOpenTech.ADAL.1|aHR0cHM6Ly9sb2dpbi53aW5kb3dzLm5ldC9jb21tb24|aHR0cHM6Ly81ZDU1ZTE4MjRjNWE0NGU2OGJjMi1teS5zaGFyZXBvaW50LmNvbS8|ZDM1OTBlZDYtNTJiMy00MTAyLWFlZmYtYWFkMjI5MmFiMDFj
## 27 com.amazon.music
## 28 com.apple.cloudd.deviceIdentifier.Production
## 29 MSOpenTech.ADAL.1|aHR0cHM6Ly9sb2dpbi53aW5kb3dzLm5ldC80MzYzYjM3Yy01ZjNjLTRmZDctYTU2MS05NDMxMzFkYjc4YmM|CC3513A0-0E69-4B4D-97FC-DFB6C91EE132|ZDM1OTBlZDYtNTJiMy00MTAyLWFlZmYtYWFkMjI5MmFiMDFj
## 30 MSOpenTech.ADAL.1|aHR0cHM6Ly9sb2dpbi53aW5kb3dzLm5ldC80MzYzYjM3Yy01ZjNjLTRmZDctYTU2MS05NDMxMzFkYjc4YmM|aHR0cHM6Ly81ZDU1ZTE4MjRjNWE0NGU2OGJjMi1teS5zaGFyZXBvaW50LmNvbS8|ZDM1OTBlZDYtNTJiMy00MTAyLWFlZmYtYWFkMjI5MmFiMDFj
## 31 SSH
## 32 com.garmin.renu.client.MSAI
## 33 com.garmin.renu.service.MSAI
## 34 BackupIDSAccountToken
## 35 com.helpshift.data_com.microsoft.Outlook
## 36 com.helpshift.data_com.microsoft.Outlook
## 37
## 38 Safari Forms AutoFill Encryption Key
## 39 com.apple.facebook.oauth-token-nosync
## 40 MetadataKeychain
## 41 com.apple.cloudd.deviceIdentifier.Production
## 42 com.apple.cloudd.deviceIdentifier.Production
## 43 com.apple.cloudd.deviceIdentifier.Production
## 44 com.apple.cloudd.deviceIdentifier.Production
## 45 com.apple.cloudd.deviceIdentifier.Production
## 46 com.apple.cloudd.deviceIdentifier.Production
## 47 com.apple.cloudd.deviceIdentifier.Production
## 48 com.apple.cloudd.deviceIdentifier.Production
## 49 com.apple.cloudd.deviceIdentifier.Production
## 50 com.apple.cloudd.deviceIdentifier.Production
## 51 com.apple.cloudd.deviceIdentifier.Production
## 52 com.apple.cloudd.deviceIdentifier.Production
## 53
## 54 com.apple.assistant
## 55 com.apple.NetworkServiceProxy.Configuration
## 56 com.apple.NetworkServiceProxy.WaldoInfo.pie.v3.hosts
## 57 com.apple.NetworkServiceProxy.WaldoInfo.com.apple.parsecd
## 58
## 59 com.apple.cloudd.deviceIdentifier.Production
## 60 com.citrix.receiver.nomas.HockeySDK
## 61 com.citrix.ReceiverHelper.HockeySDK
## 62 com.citrix.receiver.nomas.HockeySDK
## 63 com.citrix.ReceiverUpdater.HockeySDK
## 64 com.apple.twitter.oauth-token-nosync
## 65 com.apple.quicktimeplayerx.YouTube.oauth-token
## 66 com.apple.quicktimeplayerx.YouTube.oauth-refresh-token
## 67 com.helpshift.data_com.microsoft.Outlook
## 68 com.helpshift.data_com.microsoft.Outlook
## 69 com.garmin.cartography.mapupdate.express.itauth
## 70 com.apple.cloudd.deviceIdentifier.Production
## 71 Forms-{23D7314F-334F-49af-A1F1-87F222FEC590}u
## 72 com.citrix.XenAppViewer.HockeySDK
## 73 com.garmin.cartography.mapupdate.express.auth
## 74 GitHub - https://api.github.com
## 75
## 76
## 77 AGLegacy-{232FA8DF-2F1B-462c-846E-00BFBC1B5A44}u
## 78
## 79
## 80
## 81
## 82
## 83 Zoom Safe Storage
## 84 com.bluejeansnet.Blue
## 85 com.bluejeansnet.Blue
## 86 com.bluejeansnet.Blue
## 87 com.microsoft.SkypeForBusiness.HockeySDK
## 88 com.apple.assistant
## 89 Zoom Safe Meeting Storage
## 90 SWC Agent Database
## 91 Exchange
## 92 com.apple.account.AppleAccount.back-to-my-mac-token
## 93 com.apple.account.AppleIDAuthentication.token
## 94 com.apple.account.AppleIDAuthentication.token-expiry-date
## 95 AppleIDClientIdentifier
## 96 317E8977-13BE-4CD4-9FF3-F396535E48FC
## 97 com.apple.account.Google.oauth-token-nosync
## 98 Adobe User OS Info
## 99 com.apple.assistant
## 100 com.adobe.creativecloud.com.adobe.acc.pmp.C2A135575CF3D7EC0A495FA8.ThirdPartyPluginsInstall
## 101
## 102 com.apple.assistant
## 103 AirPlay Server Identity
## 104 iOS Backup
## 105 Chrome Safe Storage
## 106 com.apple.account.GameCenter.token
## 107 com.apple.assistant
## 108 com.firebase.FIRInstallations.installations.1:177223194525:ios:76d203d5a1553972
## 109 84ef17be-80f0-4750-a22c-c2a26ff1ba72
## 110 84ef17be-80f0-4750-a22c-c2a26ff1ba72
## 111 Microsoft Teams Identities Cache
## 112 Adobe App Info (Q0NMaWJyYXJ5MXt9MjAxODA3MjAwMQ)
## 113 discord Safe Storage
## 114 com.microsoft.rdc.macos
## 115 Teams Safe Storage
## 116 teamsIv
## 117 teamsKey
## 118 com.adobe.creativecloud.com.adobe.acc.container.C2A135575CF3D7EC0A495FA8.AdobeStock:NOTIFICATION_GUID_KEY
## 119 com.adobe.creativecloud.com.adobe.acc.container.C2A135575CF3D7EC0A495FA8.AdobeStock:NOTIFICATION_TIMESTAMP_KEY
## 120 com.adobe.creativecloud.com.adobe.acc.container.C2A135575CF3D7EC0A495FA8.AdobeStock:NOTIFICATION_ETAG_KEY
## 121
## 122 com.apple.account.Google.oath-refresh-token
## 123
## 124 Slack Safe Storage
## 125 com.adobe.creativecloud.com.adobe.acc.container.C2A135575CF3D7EC0A495FA8.AdobeStock:NOTIFICATION_KEY
## 126
## 127 DBX_PASSWORDS_NMHAAARijI5FMx-jb14NyZYH9Q6BB4lBd1XpMc__40F9DF58-039E-40F1-A3CD-490226F560C6
## 128 DBX_PASSWORDS_NMHAAARijI5FMx-jb14NyZYH9Q6BB4lBd1XpMc__7EB20C05-66C8-4151-9A03-3B433077E00F
## 129 Microsoft Teams Identities Cache
## 130 AdalCache
## 131 d211f69b-6302-418e-b36f-ae2aa01bdbfd
## 132 com.apple.continuity.encryption
## 133 biofire_api_key
## 134 FMFDStoreController
## 135 com.apple.assistant
## 136 com.apple.NetworkServiceProxy.ProxyToken
## 137 Microsoft Teams Safe Storage
## 138 iCloud
## 139 com.microsoft.OutlookCore.ServiceV2
## 140 com.garmin.cartography.mapupdate.express.auth
## 141
## 142 com.apple.NetworkServiceProxy.ProxyToken
## 143 Adobe User Info
## 144 com.apple.assistant
## 145 com.apple.NetworkServiceProxy.ProxyToken
## 146 com.apple.assistant
## 147 com.apple.assistant
## 148 com.apple.assistant
## 149
## 150 com.apple.continuity.encryption
## 151 com.apple.continuity.encryption
## 152 com.adobe.creativecloud.com.adobe.acc.container.C2A135575CF3D7EC0A495FA8.AdobeStock:UPDATE_INDICATOR_VISIBILITY_KEY
## 153 com.apple.continuity.encryption
## 154 Adobe App Info (Q0NMaWJyYXJ5Mnt9MjAxODA3MjAwMQ)
## 155 Apple Persistent State Encryption
## 156 com.apple.ind.registration
## 157 Adobe App Info (Q29yZVN5bmMxe30yMDE4MDcyMDAx)
## 158 Adobe App Info (Q0NYUHJvY2VzczF7fTIwMTgwNzIwMDE)
## 159 com.apple.NetworkServiceProxy.ProxyToken
## 160 Adobe App Info (Q3JlYXRpdmVDbG91ZDJ7fTIwMTgwNzIwMDE)
## 161 TelephonyUtilities
## 162 TelephonyUtilities
## 163 com.apple.gs.icloud.auth.com.apple.account.AppleIDAuthentication.token
## 164 com.apple.gs.appleid.auth.com.apple.account.AppleIDAuthentication.token
## 165 com.apple.assistant
## 166 Adobe App Info (UGhvdG9zaG9wMXt9MjAxODA3MjAwMQ)
## 167 Adobe App Info (SWxsdXN0cmF0b3Ixe30yMDE4MDcyMDAx)
## 168 com.apple.assistant
## 169 Adobe App Info (QWNyb2JhdERDMXt9MjAxODA3MjAwMQ)
## 170 OneAuthAccount
## 171 OneAuthAccount
## 172
## 173 OneAuthAccount
## 174 com.apple.continuity.encryption
## 175 com.apple.NetworkServiceProxy.ProxyToken
## 176 com.apple.account.Google.oauth-expiry-date
## 177 com.apple.account.Google.oauth-token
## 178 com.apple.NetworkServiceProxy.ProxyToken
## 179 com.apple.NetworkServiceProxy.ProxyToken
## 180 com.apple.NetworkServiceProxy.ProxyToken
## 181 com.apple.NetworkServiceProxy.ProxyToken
## 182 AirPort
## 183 AirPort
## 184 AirPort
## 185 AirPort
## 186 AirPort
## 187 AirPort
## 188 AirPort
## 189 AirPort
## 190 AirPort
## 191 AirPort
## 192 AirPort
## 193 AirPort
## 194 AirPort
## 195 AirPort
## 196 AirPort
## 197 AirPort
## 198 AirPort
## 199 AirPort
## 200 AirPort
## username
## 1 pdr.higgins@gmail.com
## 2 com.apple.scopedbookmarksagent.xpc
## 3 default
## 4 default
## 5 com.apple.CallHistory
## 6 com.apple.clouddocs
## 7 com.apple.SafariShared.WBSCloudHistoryStore
## 8
## 9 Safari
## 10 e9a97d4986bc3f7c54e215b19fda27051d7c6ce8dd2a8c716632ecb9baa5bce4
## 11 bbefd137e887c47f8495be41c2e8a2d91ab38f84b8b483fc6f15b4758e3a7b18
## 12
## 13 higgi13425@yahoo.com
## 14 Safari
## 15 fmfd-aps-token-username
## 16 2bf4e0a1358f6080420ad18d262bcbd2202bdd72
## 17 localdevice274d0a8a-5bf5-5aca-a3ab-362b925f54ca-AuthToken
## 18 com.apple.notes
## 19 pdr.higgins@gmail.com3FCF0381-C0B2-4534-9D76-8D992BDCA6BE
## 20 pdr.higgins@gmail.comBB68689C-4E3E-4E0E-8615-65B027B4B9D9
## 21 bundleSeedID
## 22 cGhpZ2dpbnNAdW1pY2guZWR1
## 23 80:ea:96:e7:43:ae
## 24 OAuth
## 25 cGhpZ2dpbnNAdW1pY2guZWR1
## 26 cGhpZ2dpbnNAdW1pY2guZWR1
## 27 amazon_cloud_player_remember_me
## 28 com.apple.largeattachment
## 29 cGhpZ2dpbnNAdW1pY2guZWR1
## 30 cGhpZ2dpbnNAdW1pY2guZWR1
## 31 /Users/peterhiggins/.ssh/id_rsa
## 32 appAnonID
## 33 appAnonID
## 34 pdr.higgins@gmail.com-AuthToken
## 35 com.helpshift.deviceUniqueIdentifier
## 36 __hs
## 37 Microsoft Office Identities Settings 2
## 38
## 39 higgi13425@yahoo.com
## 40
## 41 com.apple.security.keychain
## 42 com.apple.SafariShared.WBSCloudBookmarksStore
## 43 com.apple.knowledgestore2
## 44 com.apple.securedBluetooth
## 45 com.apple.CoreSuggestions.PseudoEvents
## 46 com.apple.security.PCSIdentityBackup
## 47 com.apple.siri.profile
## 48 com.apple.siri.knowledge
## 49 com.apple.bluetooth
## 50 com.apple.textinput.KeyboardServices
## 51 com.apple.icloud-rawhide2
## 52 com.apple.icloud-rawhide3
## 53 com.apple.WebKit.WebCrypto.master+com.apple.Safari
## 54 9980D418-5756-46F7-99F5-BAAFC46CB734 - Host Creation UUID
## 55 configuration
## 56 waldo
## 57 waldo
## 58 Microsoft Office Identities Cache 2
## 59 com.apple.messages.cloud
## 60 deletionFlag
## 61 appAnonID
## 62 appAnonID
## 63 appAnonID
## 64 higgi13425@yahoo.com-FB80BBBE-58A2-4E35-8D1E-6BDB7458458A
## 65 com.apple.quicktimeplayerx.YouTube.oauth-token
## 66 com.apple.quicktimeplayerx.YouTube.oauth-refresh-token
## 67 AllHSProfiles
## 68 lastLoggedInIdentifier
## 69 3941332313
## 70 com.apple.Maps.Sync
## 71 https://vplacesint.med.umich.edu/Citrix/vplacesAuth/ExplicitForms/Start
## 72 appAnonID
## 73 3941332313
## 74 higgi13425
## 75 /Users/peterhiggins/Library/Application Support/Adobe/Acrobat/DC/Security/reader_fss_signature_initialsk
## 76 /Users/peterhiggins/Library/Application Support/Adobe/Acrobat/DC/Security/workflowDataCacheReaderk
## 77 https://vplaces.med.umich.edu/
## 78 /Users/peterhiggins/Library/Application Support/Adobe/Acrobat/DC/Security/ES_session_storek
## 79 /Users/peterhiggins/Library/Application Support/Adobe/Acrobat/DC/Security/Annssk.dat
## 80 /Users/peterhiggins/Library/Application Support/Adobe/Acrobat/DC/Security/acrobat_eureka_caching_key_storek
## 81 /Users/peterhiggins/Library/Application Support/Adobe/Acrobat/DC/Security/acrobat_fss_signature_initialsk
## 82 /Users/peterhiggins/Library/Application Support/Adobe/Acrobat/DC/Security/workflowDataCachek
## 83 Zoom
## 84 PNConfigurationDeviceID
## 85 PNConfigurationUUID
## 86 pn_publishSequence
## 87 appAnonID
## 88 Siri Global - User Identifier
## 89 Zoom
## 90 SWC Agent Database
## 91 phiggins@email.med.umich.edu
## 92 pdr.higgins@gmail.com
## 93 pdr.higgins@gmail.com-FC61F671-38B7-4248-9B20-665F07014991
## 94 pdr.higgins@gmail.com-3007D2C2-5FBA-4A98-985D-21E894F43011
## 95
## 96 317E8977-13BE-4CD4-9FF3-F396535E48FC
## 97 pdr.higgins@gmail.com
## 98 User OS Info
## 99 Siri Global - Logging User Identifier
## 100
## 101 /Users/peterhiggins/Library/Application Support/Adobe/Acrobat/DC/Security/searchDataCachek
## 102 9980D418-5756-46F7-99F5-BAAFC46CB734 - Local Crypto Key Data
## 103 65b32966698820e956298f72d6a0a33993d934acbac7e7fe9732b0a5410bb4c8
## 104 00008101-0005452E14C0001E
## 105 Chrome
## 106 pdr.higgins@gmail.com
## 107 9980D418-5756-46F7-99F5-BAAFC46CB734 - Server Certificate Data
## 108 1:177223194525:ios:76d203d5a1553972__FIRAPP_DEFAULT
## 109 com.microsoft.lync.certificate
## 110 com.microsoft.lync.key
## 111 Microsoft Teams Identities Cache_1f41d613-d3a1-4ead-918d-2a25b10de330
## 112 App Info
## 113 discord
## 114 A9A5830D-F96E-4B23-A0D5-7014094728B0
## 115 Teams
## 116 teams
## 117 teams
## 118
## 119
## 120
## 121 /Users/peterhiggins/Library/Application Support/Adobe/Acrobat/DC/Security/DCAPIDiscoveryCacheAcrobatk
## 122 pdr.higgins@gmail.com
## 123 Microsoft Office Ticket Cache 2
## 124 Slack App Store Key
## 125
## 126 Microsoft Office Ticket Cache
## 127 AAARijI5FMx-jb14NyZYH9Q6BB4lBd1XpMc__40F9DF58-039E-40F1-A3CD-490226F560C6
## 128 AAARijI5FMx-jb14NyZYH9Q6BB4lBd1XpMc__7EB20C05-66C8-4151-9A03-3B433077E00F
## 129 Microsoft Teams Identities Cache
## 130 adalcache
## 131
## 132 handoff-decryption-key-3B5C995B-4A70-46EF-8FA5-AF6A8D8B7EB6
## 133
## 134 FMFDStoreControllerKey
## 135 Siri Global - AnalyticsIdentifiers.fixedDeviceId
## 136 CloudFlare_OHTTP_Relay_Carry
## 137 Microsoft Teams
## 138 1457225930
## 139 com.microsoft.OutlookCore.AccountV2
## 140 3481069885
## 141 Microsoft Office Identities Cache 3
## 142 CloudFlare_OHTTP_Relay_Carry_Staging
## 143 User DT
## 144 Siri Global - com.apple.assistant.music.fusetoken
## 145 Apple_2
## 146 9980D418-5756-46F7-99F5-BAAFC46CB734 - Assistant Identifier
## 147 9980D418-5756-46F7-99F5-BAAFC46CB734 - Logging Assistant Identifier
## 148 9980D418-5756-46F7-99F5-BAAFC46CB734 - Speech Identifier
## 149 /Users/peterhiggins/Library/Application Support/Adobe/Acrobat/DC/Security/AcroMLDataCachek
## 150 handoff-decryption-key-F0384A42-87AF-41F5-A4DD-E12353FD9024
## 151 handoff-decryption-key-3FC361CC-4036-4255-B474-0F2B2357A185
## 152
## 153 handoff-decryption-key-1D3B068C-DD25-4A0B-8016-371043696090
## 154 App Info
## 155 Window Bitmap Encryption
## 156 9C1AC72F-511A-46E3-88E3-64885BB78814
## 157 App Info
## 158 App Info
## 159 Akamai
## 160 App Info
## 161 lastKnownFaceTimeCallerID
## 162 registeredProviders
## 163 pdr.higgins@gmail.com
## 164 pdr.higgins@gmail.com
## 165 9980D418-5756-46F7-99F5-BAAFC46CB734 - Validation Data
## 166 App Info
## 167 App Info
## 168 Siri Global - AnalyticsIdentifiers.checkpoint
## 169 App Info
## 170 e6c3d4cc-993c-41e5-82c6-68254c71767f.1f41d613-d3a1-4ead-918d-2a25b10de330.e66e77b4-5724-44d7-8721-06df160450ce
## 171 897557a6-f7f7-4e15-b896-bd49d6ddca75
## 172 Microsoft Office Identities Settings 3
## 173 e6c3d4cc-993c-41e5-82c6-68254c71767f
## 174 handoff-own-encryption-key
## 175 Apple
## 176 pdr.higgins@gmail.com
## 177 pdr.higgins@gmail.com
## 178 Fastly
## 179 Fastly_OHTTP_Relay
## 180 CloudFlare
## 181 CloudFlare_OHTTP_Relay
## 182 NETGEAR-Guest
## 183 villaflorida1
## 184 Medosz_Front
## 185 buckeye 210
## 186 medosz_8B
## 187 Verizon MIFI4510L E927 Secure
## 188 Michigania
## 189 U10C022B7
## 190 Aran View
## 191 tep-modem-7fea
## 192 WebbNet
## 193 Stauntons_GuestWiFi
## 194 Amity Coffee
## 195 medosz_7B
## 196 iPhone
## 197 Evidera-Guest
## 198 ZyXEL202-203
## 199 Caesar_Hall
## 200 safetourbus mobile 1
## [ reached 'max' / getOption("max.print") -- omitted 113 rows ]
This gives you a list of all the keys stored by your operating system credential store.
39.1 Setting New Keys
You can add a new secret with key_set()
This will open an interactive window for you to securely enter your hidden password. This is stored in your credential store.
If you now run key_list(), and store it in a new object named keys, you can View this object and find new secret, named secure_web. Run the code chunk below.
You may need to sort these secrets by service (click on the header of this column) to make it easier to find. Note that you see the service and username, but the password is not visible. To read the secret, you need to use the key_get() function.
This actually returns the password, in this case, to the console.
You can use this to respond to a password request, or pass the password to a web API. These often use a function to retrieve data that requires the username and password as arguments.
For the imaginary website, secure_web, we can use this approach to access web storage and retrieve files.
secure_web_pwd <- key_get(service = "secure_web", username = "pdrh")
get_secure_web_files(username = "pdrh", password = secure_web_pwd)
If you want to delete a secret, you can use key_delete()
You can check this by regenerating your keys dataframe
You will find that the secret for secure_web is now gone from your Credential Store.
You can also use an R package named {credentials}, which is also popular, and it stores your credentials within git.