Commits


Thomas Newton authored and GitHub committed ba2b9e54ef1
GH-44308: [C++][FS][Azure] Implement SAS token authentication (#45021) ### Rationale for this change SAS token auth is sometimes useful and it the last one we haven't implemented. ### What changes are included in this PR? - Implement `ConfigureSasCredential` - Update `AzureOptions::FromUri` so that simply appending a SAS token to a blob storage URI works. e.g. `AzureOptions::FromUri("abfs://file_system@ account.dfs.core.windows.net/?se=2024-12-12T18:57:47Z&sig=pAs7qEBdI6sjUhqX1nrhNAKsTY%2B1SqLxPK%2BbAxLiopw%3D&sp=racwdxylti&spr=https,http&sr=c&sv=2024-08-04")` - SAS tokens are made up of a bunch of URI query parameters that I'm not sure we can exhaustively list. - Therefore we now assume that any unrecognised URI query parameters are assumed to be part of a SAS token, instead of returning an error status. - Update `CopyFile` to use StartCopyFromUri instead of CopyFromUri - This avoids the need to generate SAS tokens. - Supports blobs bigger than 256MiB - This makes https://github.com/apache/arrow/issues/41315 redundant ### Are these changes tested? Yes - Added new tests for authenticating with SAS and doing some operations including `CopyFile` - Added new tests for `AzureOptions::FromUri` with a SAS token. I also made sure to run the tests which connect to real blob storage. ### Are there any user-facing changes? - SAS token in now supported - Unrecognised URI query parameters are ignored by `AzureOptions::FromUri` instead of failing fast. IMO this is a regression but still the best option to support SAS token. * GitHub Issue: #44308 Authored-by: Thomas Newton <thomas.w.newton@gmail.com> Signed-off-by: Sutou Kouhei <kou@clear-code.com>