加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

oauth – 如何为AspNet.Security.OpenIdConnect.Server解决”引

发布时间:2020-12-16 03:24:52 所属栏目:asp.Net 来源:网络整理
导读:我面临着奇怪的问题. 我正在阅读并使用ASOS创建OpenID Connect服务器这篇文章 ASOS – AspNet.Security.OpenIdConnect.Server. 我只是创建了新的示例解决方案并添加了新的子类AuthorizationProvider类OpenIdConnectServerProvider并覆盖虚拟方法,即ExtractAu
我面临着奇怪的问题.
我正在阅读并使用ASOS创建OpenID Connect服务器这篇文章 ASOS – AspNet.Security.OpenIdConnect.Server.

我只是创建了新的示例解决方案并添加了新的子类AuthorizationProvider类OpenIdConnectServerProvider并覆盖虚拟方法,即ExtractAuthorizationRequest

AuthorizationProvider.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就会出现以下错误

“Reference to type ‘BaseControlContext” claim it is defined in
Microsoft.AspNetCore.Authentication,but it could not be found.

但是一旦我删除了Microsoft.AspNetCore.Identity NuGet依赖项,错误就会消失,所有看起来都很好.

注意:

>我正在使用VS 2017.
>我使用的是dotnetcore 2.0 SDK.
>我使用.Net Core 2.0创建了解决方案.

解决方法

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版本.您可以在aspnet-contrib MyGet源(https://www.myget.org/F/aspnet-contrib/api/v3/index.json)上找到2.0.0-preview1- *位.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读