linux:ceph:authentication_with_dotnet
Table of Contents
Authentication with .Net/c#
Documentation | |
---|---|
Name: | Authentication with .Net/c# |
Description: | How to setup amazon.s3 nuget for c# to authenticate with ceph |
Modification date : | 07/11/2018 |
Owner: | dodger |
Notify changes to: | Owner |
Tags: | oracle, deadlocks |
Scalate to: | DBA |
Instructions
RadosGW seems to not be happy when using AWS4 authentication method.
Ignore ceph's official documentation, it doesn't work.
Making radosgw
log in debug level 10
(or more):
radosgw -n client.rgw.bvmld-osgw-101 --debug-rgw=20 -f --debug_ms 20
You'll see a wonderful:
... 2018-11-07 12:19:47.943779 7f36ddffb700 20 RGWEnv::set(): HTTP_AUTHORIZATION: AWS4-HMAC-SHA256 Credential=****/20181107/us-east-1/s3/aws4_request, SignedHeaders=host;user-agent;x-amz-content-sha256;x-amz-date, Signature=********* ... 2018-11-07 12:19:29.429245 7f36ddffb700 1 ====== starting new request req=0x7f36bc011dc0 ===== 2018-11-07 12:19:29.429259 7f36ddffb700 2 req 2:0.000014::GET /::initializing for trans_id = tx000000000000000000002-005be2ca41-1030-default 2018-11-07 12:19:29.429263 7f36ddffb700 10 host=bvmld-osgw-101.ciberterminal.net 2018-11-07 12:19:29.429265 7f36ddffb700 20 subdomain= domain=bvmld-osgw-101.ciberterminal.net in_hosted_domain=1 2018-11-07 12:19:29.429273 7f36ddffb700 10 meta>> HTTP_X_AMZ_CONTENT_SHA256 2018-11-07 12:19:29.429276 7f36ddffb700 10 meta>> HTTP_X_AMZ_DATE 2018-11-07 12:19:29.429281 7f36ddffb700 10 x>> x-amz-content-sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 2018-11-07 12:19:29.429282 7f36ddffb700 10 x>> x-amz-date:20181107T111929Z 2018-11-07 12:19:29.429293 7f36ddffb700 10 s->object=<NULL> s->bucket=<NULL> 2018-11-07 12:19:29.429297 7f36ddffb700 2 req 2:0.000052:s3:GET /::getting op 2018-11-07 12:19:29.429298 7f36ddffb700 2 req 2:0.000054:s3:GET /:list_buckets:authorizing 2018-11-07 12:19:29.429301 7f36ddffb700 10 failed to authorize request 2018-11-07 12:19:29.429374 7f36ddffb700 2 req 2:0.000129:s3:GET /:list_buckets:http status=400 2018-11-07 12:19:29.429376 7f36ddffb700 1 ====== req done req=0x7f36bc011dc0 http_status=400 ======
As you can see: failed to authorize request
The key option is to use an “old” version of the auth api:
config.SignatureVersion = "2";
Official UN-documentation (there's near-to-zero information).
Sample code
- sample_ceph.cpp
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Amazon; using Amazon.S3; using Amazon.S3.Model; namespace ProvaS3 { class Program { static void Main(string[] args) { string accessKey = "****"; string secretKey = "****"; AmazonS3Config config = new AmazonS3Config(); config.ServiceURL = "http://bvmld-osgw-101.ciberterminal.net"; config.UseHttp = true; config.SignatureVersion = "2"; //config.ForcePathStyle = true; AmazonS3Client s3Client = new AmazonS3Client( accessKey, secretKey, config ); ListObjectsRequest request = new ListObjectsRequest(); request.BucketName = "ciberpay-reporting"; ListObjectsResponse response = s3Client.ListObjects(request); foreach (S3Object o in response.S3Objects) { Console.WriteLine("{0}\t{1}\t{2}", o.Key, o.Size, o.LastModified); } } } }
linux/ceph/authentication_with_dotnet.txt · Last modified: 2022/02/11 11:36 by 127.0.0.1