如何查找 Active Directory OAuth 身份验证的受众字段? (如何从 Azure Logic App 向 DevOps 发送发布请求?)

Posted

技术标签:

【中文标题】如何查找 Active Directory OAuth 身份验证的受众字段? (如何从 Azure Logic App 向 DevOps 发送发布请求?)【英文标题】:How to find Audience field for Active Directory OAuth Authentication? (How to send a post request to DevOps from Azure Logic App?) 【发布时间】:2019-07-22 19:26:24 【问题描述】:

请帮我解决这个问题。

我正在尝试从 Azure 逻辑应用向 DevOps 发送发布请求以创建发布。 我在我的逻辑应用程序中创建了一个 http 操作,这是创建版本的 uri: https://vsrm.dev.azure.com/organization/project/_apis/release/releases?api-version=5.0

我正在使用 Active Directory OAuth 进行身份验证,我需要提供租户、客户端 ID、受众和机密。

我在 Azure Active Directory 中使用我的应用程序的租户、客户端 ID 和密码,但我不确定要为受众使用什么。

谁能解释一下如何找到这个受众领域? 我是否需要做其他事情才能连接到我的 DevOps?或为标题定义权限或任何其他参数?

【问题讨论】:

【参考方案1】:

将有两种获得身份验证的方法。

    使用 Azure AD 身份验证。

DevOps 的资源是一个静态值:499b84ac-1321-427f-aa17-267ca6975798。但是,由于 DevOps REST API 只能使用委派权限进行设置。

您需要使用密码授权流程来获取令牌:

您获得的令牌将是不记名令牌。

    另一个选项是使用个人访问令牌。你可以create one in DevOps portal。

然后按如下方式使用:

try

    var personalaccesstoken = "PAT_FROM_WEBSITE";

    using (HttpClient client = new HttpClient())
    
        client.DefaultRequestHeaders.Accept.Add(
            new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
            Convert.ToBase64String(
                System.Text.ASCIIEncoding.ASCII.GetBytes(
                    string.Format("0:1", "", personalaccesstoken))));

        using (HttpResponseMessage response = await client.GetAsync(
                    "https://dev.azure.com/organization/_apis/projects"))
        
            response.EnsureSuccessStatusCode();
            string responseBody = await response.Content.ReadAsStringAsync();
            Console.WriteLine(responseBody);
        
    

catch (Exception ex)

    Console.WriteLine(ex.ToString());

您通过这种方式获得的令牌是基本令牌。

【讨论】:

感谢您的回复。对于第一个选项,我怎样才能找到 grant_type 值? 对于第二个选项,我不确定如何在逻辑应用程序中使用此代码。 正如我在屏幕截图中所描述的,grant_type 是“密码”。对于第二个选项,您需要使用正确格式的 PAT 对字符串进行 base64 编码,然后只需在以下 http 操作中添加基本身份验证标头。

以上是关于如何查找 Active Directory OAuth 身份验证的受众字段? (如何从 Azure Logic App 向 DevOps 发送发布请求?)的主要内容,如果未能解决你的问题,请参考以下文章

查找 WCF 服务调用者的 Active Directory 域用户名

查找 Active Directory 组的其他成员?

如何以编程方式在 Active Directory 中搜索打印机

使用 LDAP 在 Active Directory 中查找用户 - 没有用户?

win10系统用快捷键Ctrl+Win+F查找 计算机出现“active directory域服务当前不可用”错误怎么办?

LDAP 和 Active Directory 结果缺少某些结果的字段