Asp.net web api HTTP 500使用Azure Active Directory的OAuthAuthentication保护ASP.NET 5 Web API

Asp.net web api HTTP 500使用Azure Active Directory的OAuthAuthentication保护ASP.NET 5 Web API,asp.net-web-api,oauth,asp.net-core-mvc,azure-active-directory,Asp.net Web Api,Oauth,Asp.net Core Mvc,Azure Active Directory,在上下文中,我使用OpenIdConnect和一个使用Owin的ASP.NET4Web应用程序进行了连接(还有来自的许多帮助) 我现在想保护一个单独的ASP.NET 5 Web API项目(作为微服务托管在Azure中的同一个广告租户中)。我从Visual Studio中生成的简单ASP.NET 5 Web API开始,并将以下内容添加到Startup.cs中的Configure(在管道的开头): app.useAuthAuthentication(新的OAuthOptions() { Clie

在上下文中,我使用OpenIdConnect和一个使用Owin的ASP.NET4Web应用程序进行了连接(还有来自的许多帮助)

我现在想保护一个单独的ASP.NET 5 Web API项目(作为微服务托管在Azure中的同一个广告租户中)。我从Visual Studio中生成的简单ASP.NET 5 Web API开始,并将以下内容添加到Startup.cs中的Configure(在管道的开头):

app.useAuthAuthentication(新的OAuthOptions()
{
ClientId=“71d33a1c-505c-4815-a790-8494dd2bb430”,
ClientSecret=“LajQFbf1/Nyt/6zCP5vE5YWj5VC4aNaC3i/SRtEj2sI=”,
标记端点=”https://login.microsoftonline.com/7058f4f0-619f-4c16-ac31-9e209d70ff23/oauth2/token",
授权端点=”https://login.microsoftonline.com/7058f4f0-619f-4c16-ac31-9e209d70ff23/oauth2/authorize",
AuthenticationScheme=“OAuth2Bearer”,
CallbackPath=“/api/values”
});
这给了我一个错误,表明必须提供
符号方案
,但我不清楚该值应该是什么。如果我添加字符串,请说“OAuth2Bear”,我得到了进一步的信息,但请求中仍然出现了500个错误,但API应用程序中没有出现异常,API控制器实现中第一行的断点也没有被击中


我遗漏了什么?理想情况下,我希望随后扩展OAuthOptions的事件以添加自定义声明,类似于我对OpenIdConnect和SecurityTokenValidated通知所做的操作。

OAuth2基本中间件不能用于令牌验证,因为它是一个OAuth2客户端中间件,用于处理Authority之类的交互流所有现有的OAuth2社交提供商(如Facebook或Google)都继承自该中间件

实际上,您正在寻找JWT承载中间件:

app.UseJwtBearerAuthentication(options => {
    options.AutomaticAuthenticate = true;
    options.AutomaticChallenge = true;

    options.Authority = "[address of your OIDC server]";
    options.Audience = "[audience of the access tokens issued by the OIDC server]";
});

要了解ASP.NET Core中不同的OAuth2/OIDC中间件的更多信息,请不要错过另一篇SO帖子:。

当然,您要么使用了一个伪造的客户端机密,要么现在就将其旋转,对吗?是的,这太棒了……尽管我们考虑过让它打开以吸引人们来解决我的问题