質問:ここで何か不足しているか、実際にどの機能を呼び出すべきかを誤解していますか?Owin OAuth2.0 PasswordGrant flow
私はOwin.OAuthを使用してOAuth2を実装するためのテストWebApiプロジェクトを作成することで簡単に始めました。ルートを押すと、プロバイダに足を踏み入れることは問題ありませんが、ここのコードです: 起動クラス:
public void Configuration(IAppBuilder app)
{
var config = GlobalConfiguration.Configuration;
app.UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
Provider = new OAuthProvider(),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(60),
AllowInsecureHttp = true
});
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
WebApiConfig.Register(config);
}
そして今ベアボーンProviderクラスのため:
public class OAuthProvider : OAuthAuthorizationServerProvider
{
public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
{
return base.ValidateClientAuthentication(context);
}
public override Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
return base.GrantResourceOwnerCredentials(context);
}
}
私が使用していますよパスワードグラントhttps://tools.ietf.org/html/rfc6749#section-4.3.2今OAuthAuthorizationServerProviderドキュメントに従ってGrantResourceOwnerCredentialsの機能は次のような場合に呼び出されます。
トークンエンドポイントへのリクエストは、「パスワード」の「grant_type」で到着したときに呼び出されます。これは、ユーザーがクライアントアプリケーションのユーザーインターフェイスに直接名前とパスワードの資格情報を提供し、クライアントアプリケーションがこれらを使用して「access_token」とオプションの「refresh_token」を取得した場合に発生します。
しかし、私がルートにヒットすると、常にValidateClientAuthentication関数に入ります。
ポストマンペイロード:
POST /Token HTTP/1.1
Host: localhost:57507
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
grant_type=password&username=test&password=test123
はまたポストマン経由にBasicAuthを使用してみました:
POST /Token HTTP/1.1
Host: localhost:57507
Content-Type: application/x-www-form-urlencoded
Authorization: Basic dGVzdDp0ZXN0MTIz
grant_type=password
は、私がここで何かが足りないか、それがどのように動作するか誤解のですか?
はい、正しいです。このサンプルプロジェクトを設定して、実装していたプロジェクトがルーティングに関する問題を引き起こしているかどうかを確認しました。しかし、私はそれがDocsからどう働いているのかを誤解していました。 – BioSafety