Title: Invoke-WebRequest should directly support Basic authentication · Issue #4274 · PowerShell/PowerShell · GitHub
Open Graph Title: Invoke-WebRequest should directly support Basic authentication · Issue #4274 · PowerShell/PowerShell
X Title: Invoke-WebRequest should directly support Basic authentication · Issue #4274 · PowerShell/PowerShell
Description: We are working with more and more "Linux" based servers where we get instructions to run curl to say get back content for a .npmrc file from a product called Artifactory. This product uses Basic auth to accept credentials. The instructio...
Open Graph Description: We are working with more and more "Linux" based servers where we get instructions to run curl to say get back content for a .npmrc file from a product called Artifactory. This product uses Basic au...
X Description: We are working with more and more "Linux" based servers where we get instructions to run curl to say get back content for a .npmrc file from a product called Artifactory. This product use...
Mail addresses
user@example.com
Opengraph URL: https://github.com/PowerShell/PowerShell/issues/4274
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Invoke-WebRequest should directly support Basic authentication","articleBody":"We are working with more and more \"Linux\" based servers where we get instructions to run `curl` to say get back content for a `.npmrc` file from a product called Artifactory. This product uses Basic auth to accept credentials.\r\n\r\nThe instructions they give are:\r\n```bash\r\ncurl -u\u003cUSERNAME\u003e:\u003cPASSWORD\u003e http://artifactory.it.keysight.com:8081/artifactory/api/npm/auth\r\n```\r\n\r\nTo get this to work in PowerShell using Invoke-WebRequest, this is the best I could come up with:\r\n```posh\r\n$userpassB64 = [byte[]][char[]]\"hillr:OpenSesame\" | ConvertTo-Base64 -NoLineBreak\r\n$res = Invoke-WebRequest http://artifactory.my.company.com:8081/artifactory/api/npm/auth `\r\n -Headers @{Authorization = \"Basic $userpassB64\"}\r\n```\r\nFirst, `ConvertTo-Base64` is a PSCX command (we really need B64 encode/decode in PS Core). Second, Basic auth should be built-in like it is in CURL. \r\n\r\nThis what I'd like to see from Invoke-WebRequest:\r\n```posh\r\n$res = Invoke-WebRequest http://artifactory.my.company.com:8081/artifactory/api/npm/auth `\r\n -UseBasicAuth -Credential (Get-Credential)\r\n```\r\nThis `-UseBasicAuth` switch should also support the `-UseDefaultCredentials` parameter. However the trick is whether or not to include the `Domain\\` in the `username` field. That option, when coupled with `-UseBasicAuth` \"probably\" should not include the domain. In our scenario, Artifactory will fail to authenticate if the domain is specified. Either way, the user can always fall back to explicitly providing the username with `-Credential (Get-Credential)`.\r\n\r\nFYI, the curl docs on `-u`:\r\n\u003e -u, --user \u003cuser:password\u003e \r\nSpecify the user name and password to use for server authentication. Overrides -n, --netrc and --netrc-optional. \r\nIf you simply specify the user name, curl will prompt for a password. \r\nThe user name and passwords are split up on the first colon, which makes it impossible to use a colon in the user name with this option. The password can, still. \r\nWhen using Kerberos V5 with a Windows based server you should include the Windows domain name in the user name, in order for the server to successfully obtain a Kerberos Ticket. If you don't then the initial authentication handshake may fail. \r\nWhen using NTLM, the user name can be specified simply as the user name, without the domain, if there is a single domain and forest in your setup for example. \r\nTo specify the domain name use either Down-Level Logon Name or UPN (User Principal Name) formats. For example, EXAMPLE\\user and user@example.com respectively. \r\nIf you use a Windows SSPI-enabled curl binary and perform Kerberos V5, Negotiate, NTLM or Digest authentication then you can tell curl to select the user name and password from your environment by specifying a single colon with this option: \"-u :\". \r\nIf this option is used several times, the last one will be used. \r\n","author":{"url":"https://github.com/rkeithhill","@type":"Person","name":"rkeithhill"},"datePublished":"2017-07-17T21:35:50.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":45},"url":"https://github.com/4274/PowerShell/issues/4274"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:bf41bb63-dba1-ae8f-7781-cbd56aed23b1 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | D6EE:172D3F:2AEDF81:3AAA473:6A54917F |
| html-safe-nonce | 299da5088d71757ba72be4652220d414c58cba4b6f02c58f38b40516845eb1f4 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJENkVFOjE3MkQzRjoyQUVERjgxOjNBQUE0NzM6NkE1NDkxN0YiLCJ2aXNpdG9yX2lkIjoiNTExNDM3ODIzMTAwOTgwODc2NyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 1ba7b87069049e2321b6f3137cb1b8c4ec6c46fe657d7991006c516a39e09a1f |
| hovercard-subject-tag | issue:243535197 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/PowerShell/PowerShell/4274/issue_layout |
| twitter:image | https://opengraph.githubassets.com/84a59185c966a482e88a38a129e45ed6282441f5156eea03766f2a8daf700de6/PowerShell/PowerShell/issues/4274 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/84a59185c966a482e88a38a129e45ed6282441f5156eea03766f2a8daf700de6/PowerShell/PowerShell/issues/4274 |
| og:image:alt | We are working with more and more "Linux" based servers where we get instructions to run curl to say get back content for a .npmrc file from a product called Artifactory. This product uses Basic au... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | rkeithhill |
| hostname | github.com |
| expected-hostname | github.com |
| None | b9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb |
| turbo-cache-control | no-preview |
| go-import | github.com/PowerShell/PowerShell git https://github.com/PowerShell/PowerShell.git |
| octolytics-dimension-user_id | 11524380 |
| octolytics-dimension-user_login | PowerShell |
| octolytics-dimension-repository_id | 49609581 |
| octolytics-dimension-repository_nwo | PowerShell/PowerShell |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 49609581 |
| octolytics-dimension-repository_network_root_nwo | PowerShell/PowerShell |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | f8cfff6384f62259baea531c7f58bc7040f8dd92 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width