我在以前工作的应用程序上使用RC更新了ASP.NET 5框架beta-8软件包.运行后,在启动过程中出现下一个错误:
InvalidOperationException:没有配置身份验证处理程序来处理该方案:自动Microsoft.AspNet.Http.Authentication.Internal.DefaultAuthenticationManager.d__12.MoveNext()
var defaultPolicy =
new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
services.AddMvc(setup =>
{
setup.Filters.Add(new AuthorizeFilter(defaultPolicy)); // Error occurs here
});
Run Code Online (Sandbox Code Playgroud)
如果有人有类似的问题,我会感谢您对可能出错的想法或解决方案.此异常的解释也表示赞赏.
Startup.cs
using Autofac;
using Autofac.Extensions.DependencyInjection;
using Microsoft.AspNet.Authorization;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.Http;
using Microsoft.AspNet.Mvc.Filters;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.PlatformAbstractions;
using SuperUserMVC.Configuration;
using SuperUserMVC.Extensions;
using SuperUserMVC.GlobalModules;
using System;
namespace SuperUserMVC
{
public class Startup
{
public IConfigurationRoot Configuration { get; set; }
// Entry point for the application.
public static void Main(string[] args) => WebApplication.Run<Startup>(args);
public Startup(IHostingEnvironment env, …Run Code Online (Sandbox Code Playgroud) 阅读这个问题,@ Pinpoint的回答以及对评论的进一步讨论,我很清楚,我们原本无法在使用ASP.NET 5开发的应用程序中添加身份提供程序.然后,可以通过以下方式提供对旧版OAuthAuthorizationServerMiddleware的替代.我在许多地方找到的AspNet.Security.OpenIdConnect.Server.
现在,有一点我仍然不确定这一切因为我真的不是安全方面的专家,所以我对OAuth的了解不是很深刻.我怀疑如下:在使用OAuth保护一个RESTful API时是否可以使用外部身份提供程序?
请注意,我不是在谈论将社交登录添加到一个网站,我在谈论在一个RESTful API中使用一个外部身份提供程序.
我的观点是,这让我有点困惑,因为我一直认为这应该是我的应用程序的一个问题.
所以我的问题是:在使用OAuth和ASP.NET 5时,是否可以使用外部身份提供程序,而不是实现一个?如果有可能,这简单如何工作?我的意思是,我的应用程序仍然需要能够管理用户的身份,因为它需要管理声明等等.
在这种情况下,如果真的有可能,流程将如何?外部身份提供商应该发行令牌吗?但我的应用程序如何能够验证这些令牌并管理用户身份?
编辑:我不确定的原因之一是,当我们使用UseOAuthAuthentication扩展方法时,我们设置了一个回调路径,描述为
应用程序基本路径中将返回用户代理的请求路径.中间件将在到达时处理此请求.
现在,如果我们正在开发一个网站,那么这确实有意义.该人去那里,点击按钮登录Facebook等提供商.用户被重定向到Facebook的页面,然后在他登录后,他被重定向到该站点的某个页面.
另一方面,使用RESTful API,这是毫无意义的.没有被重定向的概念.
这使得外部提供程序的使用似乎仅适用于站点,而不适用于RESTful API.这是我的问题的要点.