gpt4 book ai didi

c# - UserPasswordCredential .Net 标准

转载 作者:行者123 更新时间:2023-12-04 15:52:43 27 4
gpt4 key购买 nike

我想调用图形 API,https://graph.windows.net为此,我正在为 token 使用如下委托(delegate)权限

UserPasswordCredential credentials = new UserPasswordCredential("username", "password");
AuthenticationContext authContext = new AuthenticationContext(string.Format("https://login.windows.net/{0}", "mytenant.onmicrosoft.com"));
var accessToken = authContext.AcquireTokenAsync("https://graph.windows.net", clientId, credentials).Result.AccessToken;

我不是租户管理员并且在 AAD 中,我无法将特定应用程序添加为应用程序身份验证的所有者。这在完整的 .net 中工作是否有 .net 标准中的解决方法?因为在这种情况下我无法使用应用程序身份验证。

我正在尝试将 webjob 转换为 Azure 函数。

最佳答案

is there a workaround for this in .net standard?

是的,我们可以使用 rest API 直接获取 token 。

Post  https://login.windows.net/<tenant-id>/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=password
&resource={resource}
&username={username}
&password={password}
&client_id={client-id}

以下是获取access token的demo代码

var tenantId = "xxx.onmicrosoft.com";
var userName = "xxx@xxxx.onmicrosoft.com";
var password = "xxxxxx";
var clientId = "xxxxxxx";
using (HttpClient client = new HttpClient())
{
var tokenEndpoint = $"https://login.windows.net/{tenantId}/oauth2/token";
var accept = "application/json";

client.DefaultRequestHeaders.Add("Accept", accept);
string postBody = $"resource=https://graph.windows.net/&client_id={clientId}&grant_type=password&username={userName}&password={password}";
using (HttpResponseMessage response = await client.PostAsync(tokenEndpoint, new StringContent(postBody, Encoding.UTF8, "application/x-www-form-urlencoded")))
{
if (response.IsSuccessStatusCode)
{
var jsonresult = JObject.Parse(await response.Content.ReadAsStringAsync());
var token = (string)jsonresult["access_token"];
}
}
}

注意:需要 Azure AD native 应用程序。

关于c# - UserPasswordCredential .Net 标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53191713/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com