当我准备在我的解决方案中更新IdentityServer项目时,我遇到了一些问题。
登录方法中的:
IdentityServer/Quickstart/Account/AccountController.cs
await _interaction.GrantConsentAsync(context, ConsentResponse.Denied);IsPkceClientAsync.
if (await _clientStore.IsPkceClientAsync(context.ClientId))In BuildLoginViewModelAsync方法:
IdentityServer/Quickstart/Account/AccountController.cs
的定义
var providers = schemes
.Where(x => x.DisplayName != null ||
(x.Name.Equals(AccountOptions.WindowsAuthenticationSchemeName, StringComparison.OrdinalIgnoreCase))
)
.Select(x => new ExternalProvider
{
DisplayName = x.DisplayName,
AuthenticationScheme = x.Name
}).ToList();的定义
var client = await _clientStore.FindEnabledClientByIdAsync(context.ClientId);回调方法中的:
IdentityServer/Quickstart/Account/ExternalController.cs
中不存在
ProcessLoginCallbackForOidc(result, additionalLocalClaims, localSignInProps);
ProcessLoginCallbackForWsFed(result, additionalLocalClaims, localSignInProps);
ProcessLoginCallbackForSaml2p(result, additionalLocalClaims, localSignInProps);await HttpContext.SignInAsync(user.Id, name, provider, localSignInProps, additionalLocalClaims.ToArray());发布于 2022-01-14 19:29:43
我做了一些研究,得出如下结论:你可以改变如下:
In Login方法: IdentityServer/Quickstart/Account/AccountController.cs
ConsentResponse不包含拒绝的定义。
await _interaction.GrantConsentAsync(context, ConsentResponse.Denied);
Change to:
await _interaction.DenyAuthorizationAsync(context, AuthorizationError.AccessDenied);IClientStore不包含IsPkceClientAsync的定义。
if (await _clientStore.IsPkceClientAsync(context.ClientId))
Change to:
if (context.IsNativeClient())In BuildLoginViewModelAsync方法: IdentityServer/Quickstart/Account/AccountController.cs
AccountOptions不包含WindowsAuthenticationSchemeName的定义
var providers = schemes
.Where(x => x.DisplayName != null ||
(x.Name.Equals(AccountOptions.WindowsAuthenticationSchemeName, StringComparison.OrdinalIgnoreCase))
)
.Select(x => new ExternalProvider
{
DisplayName = x.DisplayName,
AuthenticationScheme = x.Name
}).ToList();
Change to:
var providers = schemes
.Where(x => x.DisplayName != null)
.Select(x => new ExternalProvider
{
DisplayName = x.DisplayName ?? x.Name,
AuthenticationScheme = x.Name
}).ToList();AuthorizationRequest不包含ClientId的定义
var client = await _clientStore.FindEnabledClientByIdAsync(context.ClientId);
Change to:
var client = await _clientStore.FindEnabledClientByIdAsync(context.Client.ClientId);回调方法中的: IdentityServer/Quickstart/Account/ExternalController.cs
名称‘ProcessLoginCallbackForOidc’在当前上下文中不存在
ProcessLoginCallbackForOidc(result, additionalLocalClaims, localSignInProps);
ProcessLoginCallbackForWsFed(result, additionalLocalClaims, localSignInProps);
ProcessLoginCallbackForSaml2p(result, additionalLocalClaims, localSignInProps);
Change to:
ProcessLoginCallback(result, additionalLocalClaims, localSignInProps);无重载方法"SignInAsync“接受5个参数。
await HttpContext.SignInAsync(user.Id, name, provider, localSignInProps, additionalLocalClaims.ToArray());
Change to:
var isuser = new IdentityServerUser(user.Id)
{
DisplayName = name,
IdentityProvider = provider,
AdditionalClaims = additionalLocalClaims
};
await HttpContext.SignInAsync(isuser, localSignInProps);https://stackoverflow.com/questions/70715651
复制相似问题