Azure数据工厂:如何从Http Connector中读取C#中的用户名和密码

时间:2018-03-14 09:44:39

标签: c# rest basic-authentication azure-data-factory http-basic-authentication

我使用Azure数据工厂HTTP连接器作为链接服务,使用基本身份验证从REST端点读取数据。 { "name": "LS_HTTP", "properties": { "hubName": "Hub name", "type": "Http", "typeProperties": { "url": "http://*****.azurewebsites.net", "authenticationType": "Basic", "gatewayName": "", "encryptedCredential": "", "username": "test", "password": "**********", "enableServerCertificateValidation": true } } }

编写以下代码段以从我的Web API标头中获取用户名和密码

string authHeader = context.Request.Headers["Authorization"];
if (authHeader != null && authHeader.StartsWith("Basic"))
{
    //Extract credentials   
    string encodedUsernamePassword = authHeader.Substring("Basic ".Length).Trim();  
    Encoding encoding = Encoding.GetEncoding("iso-8859-1");
    string usernamePassword = encoding.GetString(Convert.FromBase64String(encodedUsernamePassword));    
    int seperatorIndex = usernamePassword.IndexOf(':');
    var username = usernamePassword.Substring(0, seperatorIndex);
    var password = usernamePassword.Substring(seperatorIndex + 1);  

    if (username == "test" && password == "****")
    {
        await _next.Invoke(context);
    }
    else
    {
        context.Response.StatusCode = 401; //Unauthorized
        return;
    }
}
else
{
    // no authorization header
    context.Response.StatusCode = 401; //Unauthorized
    return;
}

当我使用此设置运行Azure数据工厂管道时,我无法从web api中的请求标头获取用户名和密码,基本上Authorization标头本身为null。 帮助我从我的Web API中获取从ADF连接器服务传递的用户名和密码。

1 个答案:

答案 0 :(得分:0)

查看您的定义,您正在使用Data Factory v1。我看到你配置了一些基本身份验证不需要的属性。

encryptedCredential,不是必需的。 The documentation states

  

描述:用于访问HTTP端点的加密凭据。在复制向导或ClickOnce弹出对话框中配置身份验证信息时自动生成。

     

必需:否。仅在从本地HTTP服务器复制数据时应用。

由于您未使用本地HTTP服务器

,因此不需要

gatewayName

  

描述:连接到本地HTTP源的数据管理网关的名称。

enableServerCertificateValidation,已默认为true

文档提供了这个基本示例:

{
"name": "HttpLinkedService",
"properties":
{
    "type": "Http",
    "typeProperties":
    {
        "authenticationType": "basic",
        "url" : "https://en.wikipedia.org/wiki/",
        "userName": "user name",
        "password": "password"
    }
}
}