Wpf identityserver4 недопустимый тип гранта для клиента: authorization_code
У меня снова проблемы с IdentityServer4! На этот раз подключился к WPF.
Как и сайт .NET Core, который сейчас успешно работает, я использую "гибрид", но в то время как веб-сайт возвращает тип гранта "authorization_code", приложение WPF падает. Это выписка из журнала:
Что я уже пробовал:
Это протоколированный вывод с моего IdentityServer:
Выберите [c0].[Id], [c0].[ClientId], [c0].[Перенаправление]]
ОТ (
SELECT TOP(@__p_1) [c].[Id], [c].[AbsoluteRefreshTokenLifetime], [c].[AccessTokenLifetime], [c].[AccessTokenType], [c].[AllowAccessTokensViaBrowser], [c].[AllowOfflineAccess], [c].[AllowPlainTextPkce], [c].[AllowRememberConsent], [c].[AlwaysIncludeUserClaimsInIdToken], [c].[AlwaysSendClientClaims], [c].[AuthorizationCodeLifetime], [c].[BackChannelLogoutSessionRequired], [c].[BackChannelLogoutUri], [c].[ClientClaimsPrefix], [c].[ClientId], [c].[ClientName], [c].[ClientUri], [c].[ConsentLifetime], [c].[Created], [c].[Description], [c].[DeviceCodeLifetime], [c].[EnableLocalLogin], [c].[Enabled], [c].[FrontChannelLogoutSessionRequired], [c].[FrontChannelLogoutUri], [c].[IdentityTokenLifetime], [c].[IncludeJwtId], [c].[LastAccessed], [c].[LogoUri], [c].[NonEditable], [c].[PairWiseSubjectSalt], [c].[ProtocolType], [c].[RefreshTokenExpiration], [c].[RefreshTokenUsage], [c].[RequireClientSecret], [c].[RequireConsent], [c].[RequirePkce], [c].[SlidingRefreshTokenLifetime], [c].[UpdateAccessTokenClaimsOnRefresh], [c].[Updated], [c].[UserCodeType], [c].[UserSsoLifetime]
От [клиентов] как [c]
Где [c].[Параметр ClientID] = @__параметр ClientID_0
) Как [t]
Внутреннее соединение [ClientRedirectUris] как [c0] на [t].[Id] = [c0].[значение ClientID]
dbug: IdentityServer4.EntityFramework.Магазины.ClientStore[0]
VTConsole найдено в базе данных: True
dbug: IdentityServer4.Stores.ValidatingClientStore[0]
проверка конфигурации клиента для клиента VTConsole прошла успешно.
dbug: IdentityServer4.Validation.AuthorizeRequestValidator[0]
Проверка параметров Эпсилон
ошибка: IdentityServer4.Validation.AuthorizeRequestValidator[0]
Недопустимый тип гранта для клиента: authorization_code
{
"ClientId": "VTConsole",
"Имя Клиента": "Клиент VTConsole",
"URI перенаправления": "http://localhost/VT_ConsoleCore",
"AllowedRedirectUris": [
"http://localhost/VT_ConsoleCore"
],
"SubjectId": "аноним",
"ResponseType": "код",
"ResponseMode": "запрос",
"GrantType": "authorization_code",
"RequestedScopes": "",
"Состояние": "pW44DAo0a5FM6jjnYCMaGQ",
"Вид сырья": {
"response_type": "код",
"nonce": "uddkyT-k7lbKpLfFArzmiw",
"состояние": "pW44DAo0a5FM6jjnYCMaGQ",
"code_challenge: данный параметр": "х-rkJyBEUWcS7_hrpVzsKQP5C-lC_Sd1Yll_xu195tA",
"code_challenge_method": "S256",
"client_id": "VTConsole",
"область применения": "LDH001 offline_access CMDS ",
"redirect_uri": "http://localhost/VT_ConsoleCore"
}
}
ошибка: IdentityServer4.Endpoints.AuthorizeEndpoint[0]
```
Запрос, записанный здесь, возвращает client_id 7 и URI перенаправления http://localhost/VT_ConsoleCore - оба, как и ожидалось
Запись в ClientGrantTypes для ID 7 является гибридной.
ClientScopes содержит записи для LDH001, offline_access и CMDS, но хотя LDH001 является новым, он присутствует в APIScopes и APIResources.
Вот как я вызываю IdentityServer4 из моего WPF codebehind:
var options = new OidcClientOptions { Authority = this.config.p_Authority, ClientId = this.config.p_ClientId, RedirectUri = "http://localhost/VT_ConsoleCore", Browser = new WpfEmbeddedBrowser() }; foreach (CScopeMasterBase scope in this.scopes) { options.Scope+= $"{scope.p_AddScopeFor} "; } _oidcClient = new OidcClient(options);
Нужно ли что-то вроде AuthenticationFlow в опциях или что-то еще?