IDS4をデバッグ・トレースとともに使用すると、ログにはちょっとしたことがあります。クライアント側(Webブラウザ)でIdentityServer4のトークン・エンドポイントに対する無効なHTTP要求
Request starting HTTP/1.1 POST http://localhost:5000/connect/token?grant_type=password&client_id=resClient&client_secret=TopSecret&username=admin&password=admin123
私はちょうど
{ "error": "invalid_request" }
全体のデバッグログを取得:私はそうのように投稿するとき、私は(トークンエンドポイントの不正なHTTPリクエスト)上記のエラーを受信しています
dbug: Microsoft.AspNetCore.Server.Kestrel[1]
Connection id "0HL2NGBR0Q1O4" started.
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
Request starting HTTP/1.1 POST http://localhost:5000/connect/token?grant_type=password&client_id=resClient&client_secret=TopSecret&username=admin&password=admin123 0
dbug: Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationMiddleware[9]
AuthenticationScheme: idsrv was not authenticated.
dbug: IdentityServer4.Hosting.EndpointRouter[0]
Request path /connect/token matched to endpoint type Token
dbug: IdentityServer4.Hosting.EndpointRouter[0]
Mapping found for endpoint: Token, creating handler: IdentityServer4.Endpoints.TokenEndpoint
info: IdentityServer4.Hosting.IdentityServerMiddleware[0]
Invoking IdentityServer endpoint: IdentityServer4.Endpoints.TokenEndpoint for /connect/token
trce: IdentityServer4.Endpoints.TokenEndpoint[0]
Processing token request.
warn: IdentityServer4.Endpoints.TokenEndpoint[0]
Invalid HTTP request for token endpoint
trce: IdentityServer4.Hosting.IdentityServerMiddleware[0]
Invoking result: IdentityServer4.Endpoints.Results.TokenErrorResult
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
Request finished in 348.2168ms 400 application/json
dbug: Microsoft.AspNetCore.Server.Kestrel[9]
Connection id "0HL2NGBR0Q1O4" completed keep alive response.
私のコードはかなり疎です。ここStartup.csです:
namespace IDServer4Test
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddIdentityServer()
.AddTemporarySigningCredential()
.AddInMemoryClients(Configurations.Clients.GetClients())
.AddInMemoryApiResources(Configurations.Scopes.GetApiResources());
services.AddTransient<IResourceOwnerPasswordValidator, Configurations.ResourceOwnerPasswordValidator>();
services.AddTransient<IProfileService, Configurations.ProfileService>();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(LogLevel.Trace);
app.UseIdentityServer();
}
}
}
Clients.cs:
public class Clients
{
public static IEnumerable<Client> GetClients()
{
return new List<Client>
{
new Client
{
ClientId = "resClient",
ClientSecrets = { new Secret("TopSecret".Sha256()) },
AllowedGrantTypes = GrantTypes.ResourceOwnerPasswordAndClientCredentials,
AllowedScopes = { "myAPI" }
}
};
}
}
そしてScopes.cs:
public class Scopes
{
public static IEnumerable<ApiResource> GetApiResources()
{
return new List<ApiResource>
{
new ApiResource("myAPI", "My API")
};
}
}
私はIdentityServerからのトークンの応答を取り戻すちょうど来続けるべきですこのエラーが戻ってきます。何か案は?
私が必要とするRFCによると、grant_type、username、およびpasswordです。スコープはオプションです。いずれにしても、これらのパラメータで要求を調整しても問題は解決されません。私はいくつかのコードがないと思っています。多分IdentityModelライブラリに必要なものがあるかもしれませんが、私はこの技術に新しいことがあるので、どのように統合するのかが分かりません。 – Rafe
はい。しかし、フォームの投稿として。クエリ文字列パラメータではありません。 – leastprivilege
Webフォームなしでこのクエリを実行できる必要があります。私は後に結果を達成するために間違った方法を使っていると言っていますか? – Rafe