gpt4 book ai didi

azure - 获取AADSTS50058 : A silent sign-in request was sent but no user is signed in issue for on-behalf of user token generation

转载 作者:行者123 更新时间:2023-12-03 04:20:45 29 4
gpt4 key购买 nike

我正在开发一个将由客户端应用程序使用的 Web API。我使用的 AD 身份验证机制是“使用应用程序的权限调用 Web API”。

客户端应用程序使用应用程序权限调用 Web API,在 Web API 中,我尝试使用 Azure Rest API 来管理 Azure 资源。通过使用用户断言生成 token ,代表用户使用 Azure Rest API。

我们遇到了

"AADSTS50058: A silent sign-in request was sent but no user is signed in issue for on-behalf of user token generation "

尝试生成访问 token 时。

当客户端应用程序到 Web API 遵循使用 OAuth 2.0 客户端凭据授予的应用程序身份方法并且 Web API 尝试代表客户端 AD 应用程序使用 Azure REST/管理 API 时,代表用户场景是否有效?

  ClientCredential clientCredential = new ClientCredential(ConfigurationManager.AppSettings["ida:ClientId"], ConfigurationManager.AppSettings["ida:SecretKey"]);
AuthenticationContext authContext = new AuthenticationContext(authority);

var bootstrapContext = ClaimsPrincipal.Current.Identities.First().BootstrapContext;
string userName = ClaimsPrincipal.Current.FindFirst(ClaimTypes.Upn) != null ? ClaimsPrincipal.Current.FindFirst(ClaimTypes.Upn).Value : ClaimsPrincipal.Current.FindFirst(ClaimTypes.Email).Value;

UserAssertion userAssertion = new UserAssertion(bootstrapContext.ToString(), "urn:ietf:params:oauth:grant-type:jwt-bearer", userName);
AuthenticationResult result = await authContext.AcquireTokenAsync(ConfigurationManager.AppSettings["AzureResourceManagerIdentifier"], clientCredential, userAssertion);

// Get subscriptions to which the user has some kind of access
//string requestUrl =https://management.azure.com/subscriptions?api-version=2014-04-01"
string requestUrl = string.Format("{0}/subscriptions?api-version={1}", ConfigurationManager.AppSettings["AzureResourceManagerUrl"], AzureResourceManagerAPIVersion);

// Make the GET request
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUrl);
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
HttpResponseMessage response = client.SendAsync(request).Result;
if (response.IsSuccessStatusCode)

最佳答案

代表获取 token 以在用户调用此应用程序时调用另一个 API。

如果您的 API 是由使用客户端凭据的应用程序调用的,则不存在用户。

因此在这种情况下您不能使用 On Behalf Of。

关于azure - 获取AADSTS50058 : A silent sign-in request was sent but no user is signed in issue for on-behalf of user token generation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49286868/

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