我面临着奇怪的问题。我正在阅读并创建OpenID Connect server with ASOS
这篇文章ASOS - AspNet.Security.OpenIdConnect.Server。
我只是创建了新的示例解决方案并添加AuthorizationProvider
了 OpenIdConnectServerProvider 的新子类并覆盖了虚拟方法i.e. ExtractAuthorizationRequest
授权提供者.cs
public class AuthorizationProvider : OpenIdConnectServerProvider
{
public override Task ExtractAuthorizationRequest(ExtractAuthorizationRequestContext context)
{
// If a request_id parameter can be found in the authorization request,
// restore the complete authorization request stored in the user session.
if (!string.IsNullOrEmpty(context.Request.RequestId))
{
var payload = context.HttpContext.Session.Get(context.Request.RequestId);
if (payload == null)
{
context.Reject(
error: OpenIdConnectConstants.Errors.InvalidRequest,
description: "Invalid request: timeout expired.");
return Task.FromResult(0);
}
// Restore the authorization request parameters from the serialized payload.
using (var reader = new BsonReader(new MemoryStream(payload)))
{
foreach (var parameter in JObject.Load(reader))
{
// Avoid overriding the current request parameters.
if (context.Request.HasParameter(parameter.Key))
{
continue;
}
context.Request.SetParameter(parameter.Key, parameter.Value);
}
}
}
return Task.FromResult(0);
}
}
问题:一旦我将Microsoft.AspNetCore.Identity (2.0.0)
NuGet 包添加到我的项目中,context.Reject
就开始给出以下错误
“对类型 'BaseControlContext” 的引用声称它是在 Microsoft.AspNetCore.Authentication 中定义的,但找不到。
但是一旦我删除Microsoft.AspNetCore.Identity
NuGet 依赖项,错误就会消失,一切看起来都很好。
笔记:
- 我正在使用 VS 2017。
- 我正在使用 dotnetcore 2.0 SDK。
- 我使用 .Net Core 2.0 创建了解决方案。