Код: Выделить всё
"AzureAdB2C": {
"Instance": "https://test555.b2clogin.com",
"ClientId": "test555",
"Domain": "test555.onmicrosoft.com",
"SignedOutCallbackPath": "/signout/B2C_1_SignUpSignIn",
"SignUpSignInPolicyId": "B2C_1_SignUpSignIn"
}
Код: Выделить всё
public void ConfigureServices(IServiceCollection services)
{
services.AddMicrosoftIdentityWebAppAuthentication(Configuration, "AzureAdB2C")
.EnableTokenAcquisitionToCallDownstreamApi(new string[] { Configuration["ProsperityPilot:ProsperityPilotScope"] })
.AddInMemoryTokenCaches();
services.AddTransient();
services.AddControllersWithViews(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
}).AddMicrosoftIdentityUI();
services.AddOptions();
services.Configure(Configuration.GetSection("AzureAdB2C"));
}
Код: Выделить всё
private async Task PrepareAuthenticatedClient()
{
var accessToken = await _tokenAcquisition.GetAccessTokenForUserAsync(new[] { _todoListScope });
Debug.WriteLine($"access token-{accessToken}");
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
_httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
}
AADSTS50049: Неизвестный или недопустимый экземпляр.
Код: Выделить всё
public async Task TransformAsync(ClaimsPrincipal principal)
{
///...
var token = await GetApplicationTokenAsync();
// search Users by email
var userEmail = principal.Identity.Name;
var user = await _service.GetByEmailAsync(userEmail, token);
///...
return clone;
}
Код: Выделить всё
private async Task GetApplicationTokenAsync()
{
var clientId = _configuration["AzureAdB2C:ClientId"];
var clientSecret = _configuration["AzureAdB2C:ClientSecret"];
var scope = _configuration["MyApp:MyAppScope"];
var tenant = _configuration["AzureAdB2C:Domain"];
var policy = _configuration["AzureAdB2C:SignUpSignInPolicyId"];
var authority = $"https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/v2.0";
IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(clientId)
.WithClientSecret(clientSecret)
.WithAuthority(new Uri(authority))
.Build();
var authResult = await app.AcquireTokenForClient(new[] { scope }).ExecuteAsync();
return authResult.AccessToken;
}
- Как правильно настроить полномочия для получения токена в ASP.NET Core? 8 MVC-приложение, использующее Azure AD B2C?
- Нужно ли мне настраивать отдельный DownstreamApi? Если да, то как мне его правильно настроить?
Я создал этот репозиторий, чтобы обеспечить четкое представление и анализ проблемы, с которой я сталкиваюсь, и более глубокое понимание ошибки.
Подробнее здесь: https://stackoverflow.com/questions/786 ... -with-azur