SPAのAPIを作成しようとしています。私は最新の.NET Core、MVC、EFを使用しています。私はJWTを使ってユーザーを認証したいので、openiddict coreを使うことにしました。私はgithub pageとthis blog postの例に従って設定しようとしました。問題は、「指定された認可タイプはサポートされていません」ということです。トークンを要求するとき。ここでトークンを要求できません。空欄をリクエストしてください。
ここに私のConfigureServices
方法だ:私はサンプルからAuthorizationController
までを使用してい
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseApplicationInsightsRequestTelemetry();
app.UseApplicationInsightsExceptionTelemetry();
// don't use identity as this is a wrapper for using cookies, not needed
// app.UseIdentity();
app.UseJwtBearerAuthentication(new JwtBearerOptions
{
AutomaticAuthenticate = true,
AutomaticChallenge = true,
RequireHttpsMetadata = false, // TODO: remove, dev only
Audience = "http://localhost:42443/", // TODO: ???
Authority = "http://localhost:42443/" // TODO: ???
});
app.UseOpenIddict();
app.UseMvcWithDefaultRoute();
}
:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddApplicationInsightsTelemetry(Configuration);
services.AddMvc();
services.AddDbContext<ApplicationDbContext>(
options => options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"])
);
services.AddIdentity<ApplicationUser, ApplicationRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddOpenIddict<ApplicationDbContext>()
.UseJsonWebTokens()
.EnableTokenEndpoint("/connect/token")
.AllowPasswordFlow()
.DisableHttpsRequirement() // TODO: remove in production
.AddEphemeralSigningKey(); // TODO: replace with a certificate, this should be used for development only
}
私はなぜ見当がつかない:/connect/token
要求を処理Exchange
方法、のrequest
引数の内容を観察することで、私はそれがヌルとしてすべてのフィールドを受け取ることを発見しました。郵便配達希望は、thisとthisブログの投稿によれば正しいはずです。問題はどこだ?
あなたの野郎。 :)あなたは15秒で私を倒す。 –
ああ、完全にその部分を逃した...私はまだ別のパッケージが必要だったことを知っていなかった:)それはそれだった!ありがとう! :) –
@HonzaKalfusこのパッケージは、OpenIdConnectRequestパラメータをバインドできるようにしたい場合にのみ必要です。下位レベルのAPIを使用する場合は、 'HttpContext.GetOpenIdConnectRequest()'を使用することができます。 – Pinpoint