Я использую OWIN-безопасность для своего asp. net приложения web api 2, и вот моя настройка класса запуска для аутентификации.
public void ConfigureOAuth(IAppBuilder app)
{
var oAuthServerOptions = new OAuthAuthorizationServerOptions
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
Provider = new CustomAuthorizationServerProvider()
};
// Token Generation
app.UseOAuthAuthorizationServer(oAuthServerOptions);
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
}
А вот CustomAuthorizationServerProvider
реализация класса,
public class CustomAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
{
context.TryGetFormCredentials(out var clientId, out var clientSecret);
if (clientId == "987459827985" && clientSecret == "lkfjldsfjkld")
{
context.Validated(clientId);
}
return base.ValidateClientAuthentication(context);
}
public override Task GrantClientCredentials(OAuthGrantClientCredentialsContext context)
{
var oAuthIdentity = new ClaimsIdentity(context.Options.AuthenticationType);
oAuthIdentity.AddClaim(new Claim(ClaimTypes.Name, "TestClient"));
var ticket = new AuthenticationTicket(oAuthIdentity, new AuthenticationProperties());
context.Validated(ticket);
return base.GrantClientCredentials(context);
}
}
Теперь, пытаясь сгенерировать токен с использованием конечной точки http://localhost:8080/token
, я получаю NULL для clientId и clientSecret, и, следовательно, я получаю "error": "invalid_client"
. Что мне здесь не хватает?
Редактировать: РЕДАКТИРОВАТЬ
Когда я использую raw
в качестве тела, я вижу, что генерация токенов работает, и клиент и секрет имеют значение. Почему не работает form-data
?