【问题标题】:C# console application authentication sessionC# 控制台应用程序身份验证会话
【发布时间】:2019-05-07 04:47:27
【问题描述】:

有人如何在 C# 控制台应用程序中实现 az login (Azure CLI) 体验?

在这种情况下,会打开一个浏览器窗口,用户进行身份验证,然后他就可以访问私有资源。 我的猜测是身份验证令牌存储在某个地方,但是在哪里?会话变量,文件..?

更新

我发现有一个文件夹~/.azure存储了相关信息。所以问题更多在第一部分(启动浏览器并获取生成的令牌)。

【问题讨论】:

  • az 是指azure 吗?如果是这样,请使用后者并将前者标记为同义词

标签: c# azure azure-cli2 az


【解决方案1】:

有人如何在 C# 控制台应用程序中实现 az login (Azure CLI) 体验?

1.使用Process.Start(@"http://url");启动浏览器。用户输入凭据后,您将获得授权码。复制它。

2.获取授权码。

3.使用以下代码获取访问令牌:

using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Add("ContentType", "application/json");
    var requestURl = new Uri($"https://login.microsoftonline.com/xxxxxxxxxxxxxxxxxxxx/oauth2/v2.0/token");
    string body = "{\"client_id\": \"3c35ed0b-a441-4c57-9d1c-3a3b0392d9c3\",\"code\":\"the_code_you_copy_in_the_second_step\",\"redirect_uri\": \"https://localhost\",\"grant_type\": \"authorization_code\",\"client_secret\": \"xxxxxxxxxxxxxx\",\"scope\": \"user.read\"}";
    var stringContent = new StringContent(body, Encoding.UTF8, "application/json");
    var response = client.PostAsync(requestURl, stringContent).Result;
}

4.结果:

有关如何获取authorization codeaccess token 的更多详细信息,您可以参考此article

【讨论】:

  • 谢谢@Joey,但我希望整个操作在 CLI 中实现自动化。如何从步骤 1 中获取值?
  • 如果您想在输入用户凭证后直接获取访问令牌,您可以使用implicit grant flow
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-21
  • 1970-01-01
  • 1970-01-01
  • 2011-09-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多