我正在使用 ASP.NET Core 3.1 和 Azure AD B2C。我的目标是对我的整个网络应用程序使用授权代码流,但文档并不简单。
我按照此处给出的说明进行操作:登录用户的 Web 应用程序:代码配置
但是,当我尝试访问我的网站时,出现以下错误:
[ERR] 消息包含错误:“unauthorized_client”,错误描述:“AADB2C90057:所提供的应用程序未配置为允许“OAuth”隐式流。uri:“error_uri 为 null”。(95c3107f)
在我的应用程序注册中,我没有启用隐式授予的两个选项中的任何一个(访问令牌和 ID 令牌)。
同样,我的目标是在任何地方使用授权代码流程。
知道为什么我收到消息说我的应用程序应该配置为允许隐式流吗?我应该如何配置它以使用授权代码流程?
我今天早上升级到VS2015 RC,我使用ASP.NET 5模板 - 网站创建了一个新项目.我有一个错误,我无法解决:
处理请求时发生未处理的异常.
MissingMethodException:找不到方法:'System .Collections.Immutable.ImmutableArray`1 Microsoft.CodeAnalysis.Emit.EmitResult.get_Diagnostics()'.
Microsoft.AspNet.Mvc.Razor.RoslynCompilationService.Compile(RelativeFileInfo fileInfo,String compilationContent)
这是完整的错误堆栈:
MissingMethodException:找不到方法:'System.Collections.Immutable.ImmutableArray`1 Microsoft.CodeAnalysis.Emit.EmitResult.get_Diagnostics()'.
Microsoft.AspNet.Mvc.Razor.RoslynCompilationService.Compile(RelativeFileInfo fileInfo,String compilationContent)
Microsoft.AspNet.Mvc.Razor.RazorCompilationService.Compile(RelativeFileInfo文件)
Microsoft.AspNet.Mvc.Razor.CompilerCache.OnCacheMiss(RelativeFileInfo文件,String normalizedPath,Func`2编译)
Microsoft.AspNet.Mvc.Razor.CompilerCache.GetOrAddCore(String relativePath,Func`2 compile)
Microsoft.AspNet.Mvc.Razor.CompilerCache.GetOrAdd(String relativePath,Func`2 compile)
Microsoft.AspNet.Mvc.Razor.VirtualPathRazorPageFactory.CreateInstance(String relativePath)
Microsoft.AspNet.Mvc.Razor.RazorViewEngine.LocatePageFromViewLocations(ActionContext context,String pageName,Boolean isPartial)
Microsoft.AspNet.Mvc.Razor.RazorViewEngine.GetRazorPageResult(ActionContext context,String pageName,Boolean isPartial)
Microsoft.AspNet.Mvc.Razor.RazorViewEngine.FindView(ActionContext context,String viewName)
Microsoft.AspNet.Mvc.Rendering.CompositeViewEngine.FindView(ActionContext context,String viewName,Boolean partial)
Microsoft.AspNet.Mvc.Rendering.CompositeViewEngine.FindView(ActionContext context,String viewName)
Microsoft.AspNet.Mvc.ViewResult.d__20.MoveNext()
---从抛出异常的先前位置开始的堆栈跟踪结束---
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)
System.Runtime.CompilerServices.TaskAwaiter.GetResult()
Microsoft.AspNet.Mvc.Core.FilterActionInvoker.d__44.MoveNext()
---从抛出异常的先前位置开始的堆栈跟踪结束---
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)
System.Runtime.CompilerServices.TaskAwaiter.GetResult()
Microsoft.AspNet.Mvc.Core.FilterActionInvoker.d__43.MoveNext()
---从抛出异常的先前位置开始的堆栈跟踪结束---
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
Microsoft.AspNet.Mvc.Core.FilterActionInvoker.d__42.MoveNext()
---从抛出异常的先前位置开始的堆栈跟踪结束---
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)
System.Runtime.CompilerServices.TaskAwaiter.GetResult()
Microsoft.AspNet.Mvc.Core.FilterActionInvoker.d__37.MoveNext()
---从抛出异常的先前位置开始的堆栈跟踪结束---
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
Microsoft.AspNet.Mvc.Core.FilterActionInvoker.d__32.MoveNext()
---从抛出异常的先前位置开始的堆栈跟踪结束---
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)
System.Runtime.CompilerServices.TaskAwaiter.GetResult()
Microsoft.AspNet.Mvc.MvcRouteHandler.d__3.MoveNext()
---从抛出异常的先前位置开始的堆栈跟踪结束---
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)
System.Runtime.CompilerServices.TaskAwaiter.GetResult()
Microsoft.AspNet.Mvc.MvcRouteHandler.d__2.MoveNext()
---从抛出异常的先前位置开始的堆栈跟踪结束--- …
我关注这篇文章:使用ASP.NET Web API 2,Owin和Identity进行基于令牌的身份验证.现在,我有一个Web API独立"服务器"能够成功验证用户,并在向其发送用户名/密码时返回访问令牌.然后,我可以使用访问令牌来访问受保护的数据(在博客文章中,我可以访问订单).
目前,我发送用户名/密码以获取访问令牌的客户端是一个控制台应用程序.
我想增加一点复杂性,在获得访问令牌之前,我想获得一个授权码.但我找不到任何关于如何做的例子.根据我的阅读,我应该发送一个这样结构的GET请求:
/ authorize?response_type = code&client_id = <ClientID>
这是我在我的控制台应用程序中所做的事情:
using (var client = new HttpClient())
{
var response = await client.GetAsync("http://localhost:63828/authorize?response_type=code&client_id=" + Guid.NewGuid());
var responseString = response.Content.ReadAsStringAsync().Result;
}
Run Code Online (Sandbox Code Playgroud)
但是我收到一条错误消息:
无法找到该资源.
[HttpException]:未找到路径'/ authorize'的控制器或未实现IController.在System.Web.Mvc.DevaultControllerFactory.GetControllerInstance(RequestContext requestContext,Type controllerType)中的System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext,String controllerName)at System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext,IController&controller) System.Web.Mvc上System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext,AsyncCallback回调,对象状态)的System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext,AsyncCallback回调,对象状态),IControllerFactory&factory) System.Web.HttpApplication.ExecuteStep(IExecutionStep)上的System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()中的.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext上下文,AsyncCallback cb,Object extraData) step,Boolean&completedSynchronously)
这是Web API项目中Startup.cs文件的内容:
public class Startup
{
public void Configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
ConfigureOAuth(app);
WebApiConfig.Register(config);
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
app.UseWebApi(config);
}
public void ConfigureOAuth(IAppBuilder app)
{
OAuthAuthorizationServerOptions OAuthServerOptions …Run Code Online (Sandbox Code Playgroud) 使用 SQL Server SSL(连接字符串中的 Encrypted=true)+ TDE 与使用 SQL Server Always Encrypted 有什么区别?
关于 RGPD,一个比另一个更适应吗?