Я использую OAuthAuthorizationServerProvider
от Microsoft Owin Security, и вот я использую код,
var oAuthAuthorizationServerOptions = new OAuthAuthorizationServerOptions()
{
TokenEndpointPath = new Microsoft.Owin.PathString("/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(5),
AllowInsecureHttp = true,
Provider = new CustomOAuthProvider()
};
CustomOAuthProvider,
public class CustomOAuthProvider : OAuthAuthorizationServerProvider
{
public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
{
var lstClients = ClientService.GetClients();
if (lstClients.Count <= 0) return base.ValidateClientAuthentication(context);
context.TryGetFormCredentials(out var clientId, out var clientSecret);
if (lstClients.Count(c => c.ClientId == clientId) > 0
&& lstClients.Count(c => c.ClientPassword == clientSecret) > 0)
{
context.Validated(clientId);
}
return base.ValidateClientAuthentication(context);
}
public override Task GrantClientCredentials(OAuthGrantClientCredentialsContext context)
{
var claimsIdentity = new ClaimsIdentity(context.Options.AuthenticationType);
claimsIdentity.AddClaim(new Claim(ClaimTypes.Name, context.ClientId));
var props = new AuthenticationProperties(new Dictionary<string, string>
{
{ "client_id", context.ClientId },
{ "scope", string.Join(" ",context.Scope) }
});
var ticket = new AuthenticationTicket(claimsIdentity, props);
context.Validated(ticket);
return base.GrantClientCredentials(context);
}
}
Я пытаюсь добавить scope
, но, похоже, это неправильный способ добавления, даже все выглядит хорошо и работает, и когда я пытаюсь просмотреть токен,
- в
jwt.IO
я вижу ошибку недопустимой подписи. - в
calebb.net
говорится: JWT должен иметь три сегмента
Что здесь не так? Пожалуйста, предложите.