5

我面临着奇怪的问题。我正在阅读并创建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.IdentityNuGet 依赖项,错误就会消失,一切看起来都很好。

笔记:

  1. 我正在使用 VS 2017。
  2. 我正在使用 dotnetcore 2.0 SDK。
  3. 我使用 .Net Core 2.0 创建了解决方案。
4

1 回答 1

2

ASP.NET Core 2.0 的身份验证堆栈中引入了大量更改。这些更改非常重要,以至于为 ASP.NET Core 1.x 编写的所有身份验证中间件都不兼容(包括所有 aspnet-contrib 项目)。

您可以阅读https://github.com/aspnet/Announcements/issues/262了解更多信息。

好消息是我们有一个与 ASP.NET Core 2.0 RTM 兼容的 ASOS 版本。您可以2.0.0-preview1-*在 aspnet-contrib MyGet 提要 ( https://www.myget.org/F/aspnet-contrib/api/v3/index.json ) 上找到这些信息。

于 2017-08-23T13:40:45.657 回答