У меня возникли проблемы неприятности с вебом-апите 2.Получить доступ Токен Asp.NET Web Api 2
Я использую vs2015 и разработал свой проект на ASP.NET MVC единого шаблона страницы, которые используют нокаут и Сэме получить/авторизировать идентификацию через owin
промежуточное ПО.
Когда я запрашиваю токен доступа по умолчанию для одной страницы app.js, это работает хорошо, но если я попытаюсь получить токен через почтальон (grant_type=password&[email protected]&password=1234
), который возвращает ошибку invalid_cliend
.
{
"error": "invalid_client"
}
Поставщик:
public class ApplicationOAuthProvider : OAuthAuthorizationServerProvider
{
private readonly string _publicClientId;
public ApplicationOAuthProvider(string publicClientId)
{
if (publicClientId == null)
{
throw new ArgumentNullException("publicClientId");
}
_publicClientId = publicClientId;
}
public override Task ValidateClientRedirectUri(OAuthValidateClientRedirectUriContext context)
{
if (context.ClientId == _publicClientId)
{
Uri expectedRootUri = new Uri(context.Request.Uri, "/");
if (expectedRootUri.AbsoluteUri == context.RedirectUri)
{
context.Validated();
}
else if (context.ClientId == "web")
{
var expectedUri = new Uri(context.Request.Uri, "/");
context.Validated(expectedUri.AbsoluteUri);
}
}
return Task.FromResult<object>(null);
}
}
Startup.Auth:
static Startup()
{
PublicClientId = "web";
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
AuthorizeEndpointPath = new PathString("/Account/Authorize"),
Provider = new ApplicationOAuthProvider(PublicClientId),
//Provider = new AuthorizationServerProvider(),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = true
};
}
public static OAuthAuthorizationServerOptions OAuthOptions { get; private set; }
public static string PublicClientId { get; private set; }
мне нужна ваша помощь.
Убедитесь, что вы отправки 'grant_type = пароль & имя = админ @ mail.com и пароль = 1234' в теле запроса. Как вы составляете свой запрос в почтальоне? Возможно, вы можете использовать 'Fiddler' для перехвата запроса из вашего' app.js' (который, как вы говорите, работает нормально), чтобы увидеть, как он отправляется, а затем сравнивается. –
Перейдите на вкладку «Тело» -> установите флажок «x-www-form-urlencoded» и передайте имя_данных, имя пользователя и пароль в качестве пары ключ/значение. – tsubasaetkisi