질문 : 여기에 뭔가 빠져 있거나 실제로 어떤 함수를 호출해야하는지 오인하고 있습니까?Owin OAuth2.0 PasswordGrant flow
그래서 Owin.OAuth를 사용하여 OAuth2를 구현하는 테스트 WebApi 프로젝트를 작성하여 간단하게 시작했습니다. 시작 클래스 : 경로를 명중하고 공급자에 스테핑하는 것은 아무런 문제가 없지만, 여기에 코드입니다
public class OAuthProvider : OAuthAuthorizationServerProvider
{
public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
{
return base.ValidateClientAuthentication(context);
}
public override Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
return base.GrantResourceOwnerCredentials(context);
}
}
내가 사용 찾고 있어요 :
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);
}
그리고 지금 베어 제공자 클래스
비밀 번호 부여 https://tools.ietf.org/html/rfc6749#section-4.3.2. 토큰 엔드 포인트에 대한 요청이 "비밀"의 "grant_type"에 도착했을 때가 호출 : 때 지금 OAuthAuthorizationServerProvider의 문서에 따라 GrantResourceOwnerCredentials 함수가 호출된다. 이것은 사용자가 클라이언트 응용 프로그램의 사용자 인터페이스에 직접 이름과 암호 자격 증명을 제공하고 클라이언트 응용 프로그램이 "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
내가 여기서 뭔가를 누락되거나 작동하는 방법을 잘못 해석하고 있는가?
네, 맞습니다. 이 샘플 프로젝트를 설정하여 프로젝트를 구현중인 프로젝트가 라우팅 문제를 일으키는 지 확인합니다. 그러나 나는 그것이 문서에서 어떻게 작동하는지 오해하고있었습니다. – BioSafety