User Tools

Site Tools


ceph:authentication_with_dotnet

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

ceph:authentication_with_dotnet [2019/06/20 10:08] – ↷ Page moved from documentation:linux:ceph:authentication_with_dotnet to ceph:authentication_with_dotnet dodgerceph:authentication_with_dotnet [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1
Line 1: Line 1:
-====== 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:|jholgado| 
-^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): 
-<code bash> 
-radosgw -n client.rgw.bvmld-osgw-101 --debug-rgw=20 -f --debug_ms 20 
-</code> 
-You'll see a wonderful: 
-<code> 
-... 
-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.voxelgroup.net 
-2018-11-07 12:19:29.429265 7f36ddffb700 20 subdomain= domain=bvmld-osgw-101.voxelgroup.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 ====== 
-</code>  
-As you can see: ''failed to authorize request''\\ 
- 
-The key option is to use an "old" version of the auth api: 
-<code c> 
-config.SignatureVersion = "2"; 
-</code> 
- 
-[[https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TClientConfig.html|Official UN-documentation]] (there's near-to-zero information).\\ 
- 
- 
- 
- 
-====== Sample code ====== 
- 
- 
-<file c 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.voxelgroup.net"; 
-            config.UseHttp = true; 
-            config.SignatureVersion = "2"; 
-             
-            //config.ForcePathStyle = true; 
-             
-            AmazonS3Client s3Client = new AmazonS3Client( 
-                    accessKey, 
-                    secretKey, 
-                    config 
-                    ); 
-             
-            ListObjectsRequest request = new ListObjectsRequest(); 
-            request.BucketName = "epayments-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); 
-            } 
-        } 
-    } 
-} 
-</file>