0

Amazon ID 管理は初めてで、Windows アプリケーションで新しいユーザーを作成したいと考えています。AWS .NET SDK を使用してこれが可能であることは知っていますが、WSDL または API を使用してユーザーを作成する必要があります。

VB.NET での IAM 用の AWS IAM 署名バージョン 2 または 4 コードの作成についてサポートが必要です。以下のコードを見つけて、必要な変更をお知らせください。

Imports System
Imports System.IO
Imports System.Net
Imports System.Text
Imports System.Web
Imports System.Collections.Generic
Imports System.Security.Cryptography
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim strURL As String
        strURL = "https://iam.amazonaws.com/"
        Dim strTimestamp As String = PercentEncodeRfc3986(DateTime.UtcNow.ToString("yyyy-MM-dd'T'HH:mm:ss'Z'"))

        Dim strParams As String
        strParams = "?AWSAccessKeyId=XXXXXXXX" &
        "&Action=CreateUser" & _
        "&Path=/" & _
        "&UserName=User1" & _
        "&Timestamp=" & strTimestamp & _
        "&SignatureVersion=2" & _
        "&Version=2010-05-08" & _
        "&SignatureMethod=HmacSHA256"

        Dim strStringToSign As String = "GET\nhttps://iam.amazonaws.com\n/\n" & strParams
        strURL = strURL & strParams & "&Signature=" & PercentEncodeRfc3986(HashString(strStringToSign))
        Dim wc As New WebClient()
        Dim strResponse As String
        strResponse = wc.DownloadString(strURL)
        RichTextBox1.Text = strResponse

    End Sub

    Private Function PercentEncodeRfc3986(ByVal str As String) As String
        str = HttpUtility.UrlEncode(str, System.Text.Encoding.UTF8)
        str.Replace("'", "%27").Replace("(", "%28").Replace(")", "%29").Replace("*", "%2A").Replace("!", "%21").Replace("%7e", "~")

        Dim sbuilder As New StringBuilder(str)
        For i As Integer = 0 To sbuilder.Length - 1
            If sbuilder(i) = "%"c Then
                If [Char].IsDigit(sbuilder(i + 1)) AndAlso [Char].IsLetter(sbuilder(i + 2)) Then
                    sbuilder(i + 2) = [Char].ToUpper(sbuilder(i + 2))
                End If
            End If
        Next
        Return sbuilder.ToString()
    End Function
    Private Const PRIVATE_KEY As String = "XXXXXXX"

    Private Function HashString(ByVal StringToHash As String) As String
        Dim Key() As Byte = Encoding.UTF8.GetBytes(PRIVATE_KEY)
        Dim XML() As Byte = Encoding.UTF8.GetBytes(StringToHash)
        Dim myHMACSHA256 As New System.Security.Cryptography.HMACSHA256(Key)
        Dim HashCode As Byte() = myHMACSHA256.ComputeHash(XML)
        Return Convert.ToBase64String(HashCode)
    End Function


End Class

ありがとう、ラージ

4

1 に答える 1