Authentication.AuthenticateAsync возвращает ноль ⇐ C#
-
Anonymous
Authentication.AuthenticateAsync возвращает ноль
Я хочу получить свой токен доступа Azure B2C AD из httpContext или аналогичного объекта, но я использую .NET Framework 4.7.2. Если бы я использовал ядро .Net, я бы использовал HttpContext.Authentication.GetTokenAsync() .
Справочная информация
Я использую OpenIdConnect 4.1.0.
Мои параметры OpenIdConnectAuthenticationOptions выглядят следующим образом:
private OpenIdConnectAuthenticationOptions CreateOptionsFromSiteConfig (конфигурация B2CConfig) { Опции OpenIdConnectAuthenticationOptions = новые OpenIdConnectAuthenticationOptions(); options.MetadataAddress = string.Format(_aadInstance, _tenant, config.Policy); options.AuthenticationType = [B2CAD-имя-политики]; options.AuthenticationMode = AuthenticationMode.Passive; options.RedirectUri = config.AzureReplyUri; options.PostLogoutRedirectUri = config.LogoutRedirectUri; options.TokenValidationParameters = новые параметры TokenValidationParameters { NameClaimType = "электронная почта" }; options.SaveTokens = правда; options.RedeemCode = true; вар IdentityProvider = GetIdentityProvider (); options.Notifications = новый OpenIdConnectAuthenticationNotifications() { АутентификацияФаилед = АутентификацияФаилед, RedirectToIdentityProvider = уведомление => { return Task.FromResult(notification.ProtocolMessage.UiLocales = config.UiLocale ?? string.Empty); }, SecurityTokenValidated = уведомление => { Notification.AuthenticationTicket.Identity.AddClaim(new Claim("idp", "azureadb2c")); // преобразуем все утверждения ClaimsIdentity идентификация = уведомление.AuthenticationTicket.Identity; Notification.AuthenticationTicket.Identity.ApplyClaimsTransformations(new TransformationContext(FederatedAuthenticationConfiguration,identProvider)); вернуть Задача.ЗавершеннаяЗадача; }, }; options.ClientId = config.ClientId; options.Scope = "openid [api-scope-here]"; options.ResponseType = "токен id_token"; варианты возврата; } Существует несколько политик с одним и тем же именем (т. е. несколько типов аутентификации с одним и тем же именем).
На данный момент я нашел несколько предложений, наиболее перспективным из которых было следующее:
var result = await owinContext.Authentication.AuthenticateAsync([B2CAD-POLICY-name])); строковый токен = result.Properties.Dictionary["access_token"]; Однако результат всегда равен NULL, хотя я проверил, что политика b2cad действительно присутствует в OwinContext.
Любая помощь приветствуется!
Я хочу получить свой токен доступа Azure B2C AD из httpContext или аналогичного объекта, но я использую .NET Framework 4.7.2. Если бы я использовал ядро .Net, я бы использовал HttpContext.Authentication.GetTokenAsync() .
Справочная информация
Я использую OpenIdConnect 4.1.0.
Мои параметры OpenIdConnectAuthenticationOptions выглядят следующим образом:
private OpenIdConnectAuthenticationOptions CreateOptionsFromSiteConfig (конфигурация B2CConfig) { Опции OpenIdConnectAuthenticationOptions = новые OpenIdConnectAuthenticationOptions(); options.MetadataAddress = string.Format(_aadInstance, _tenant, config.Policy); options.AuthenticationType = [B2CAD-имя-политики]; options.AuthenticationMode = AuthenticationMode.Passive; options.RedirectUri = config.AzureReplyUri; options.PostLogoutRedirectUri = config.LogoutRedirectUri; options.TokenValidationParameters = новые параметры TokenValidationParameters { NameClaimType = "электронная почта" }; options.SaveTokens = правда; options.RedeemCode = true; вар IdentityProvider = GetIdentityProvider (); options.Notifications = новый OpenIdConnectAuthenticationNotifications() { АутентификацияФаилед = АутентификацияФаилед, RedirectToIdentityProvider = уведомление => { return Task.FromResult(notification.ProtocolMessage.UiLocales = config.UiLocale ?? string.Empty); }, SecurityTokenValidated = уведомление => { Notification.AuthenticationTicket.Identity.AddClaim(new Claim("idp", "azureadb2c")); // преобразуем все утверждения ClaimsIdentity идентификация = уведомление.AuthenticationTicket.Identity; Notification.AuthenticationTicket.Identity.ApplyClaimsTransformations(new TransformationContext(FederatedAuthenticationConfiguration,identProvider)); вернуть Задача.ЗавершеннаяЗадача; }, }; options.ClientId = config.ClientId; options.Scope = "openid [api-scope-here]"; options.ResponseType = "токен id_token"; варианты возврата; } Существует несколько политик с одним и тем же именем (т. е. несколько типов аутентификации с одним и тем же именем).
На данный момент я нашел несколько предложений, наиболее перспективным из которых было следующее:
var result = await owinContext.Authentication.AuthenticateAsync([B2CAD-POLICY-name])); строковый токен = result.Properties.Dictionary["access_token"]; Однако результат всегда равен NULL, хотя я проверил, что политика b2cad действительно присутствует в OwinContext.
Любая помощь приветствуется!
Мобильная версия