imm*_*rza 5 oauth asp.net-identity openid-connect asp.net-core asp.net-core-mvc-2.0
我面临着奇怪的问题.我正在阅读并创建OpenID Connect server with ASOS这篇文章ASOS - AspNet.Security.OpenIdConnect.Server.
我只是创建了新的示例解决方案并添加AuthorizationProvider了OpenIdConnectServerProvider的新子类,并覆盖了虚方法i.e. 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);
}
}
Run Code Online (Sandbox Code Playgroud)
问题:只要我将Microsoft.AspNetCore.Identity (2.0.0)NuGet包添加到我的项目中,context.Reject就开始给出以下错误
"引用类型'BaseControlContext"声称它是在Microsoft.AspNetCore.Authentication中定义的,但无法找到它.
但是一旦我删除了Microsoft.AspNetCore.IdentityNuGet依赖项,错误就会消失,所有看起来都很好.
注意:
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 feed ( https://www.myget.org/F/aspnet-contrib/api/v3/index.json ) 上找到这些内容。
| 归档时间: |
|
| 查看次数: |
459 次 |
| 最近记录: |