Hi
My code is working if I pass grant_type="client_credentials" Body in POSTMAN. But If i pass grant_type in params. It give me "error": "unsupported_grant_type".
Please see in below screenshot.
![](https://www.csharp.com/forums/uploadfile/346b23/01102024152447PM/image.png)
How can i take grant_type from url query string.
See below my code is working with grant_type passed in Body.
public class AppAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
string _contextClientId = "";
string _contextCleintSecret = "";
public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
{
string clientId = string.Empty;
string clientSecret = string.Empty;
_contextClientId = context.Parameters.Get("clientId");
_contextCleintSecret = context.Parameters.Get("clientSecret");
if (context.TryGetBasicCredentials(out clientId, out clientSecret))
{
context.SetError("invalid _client", "client credential could not be retrived");
context.Rejected();
return Task.CompletedTask;
}
ClientDetails client = (new ClientDetailsRepo()).ValidateClient(_contextClientId, _contextCleintSecret);
if (client != null)
{
context.OwinContext.Set<ClientDetails>("oauth:client", client);
context.Validated();
}
else
{
context.SetError("invalid _client", "client credentials are not valid");
context.Rejected();
}
//context.Validated();
return Task.CompletedTask;
}
public override async Task GrantClientCredentials(OAuthGrantClientCredentialsContext context)
{
//Guid clientId;
//Guid.TryParse(context.ClientId, out clientId);
//validate aginstdb or config: GetByClientId(clientId);
//string clientId = context.ClientId;
bool client = ConfigurationManager.AppSettings["ClientId"] == _contextClientId && ConfigurationManager.AppSettings["ClientSecret"] == _contextCleintSecret;
if (!client)
{
context.SetError("invalid_grant", "Invaild client.");
context.Rejected();
return;
}
var claimsIdentity = new ClaimsIdentity(context.Options.AuthenticationType);
claimsIdentity.AddClaim(new Claim("LoggedOn", DateTime.Now.ToString()));
claimsIdentity.AddClaim(new Claim("ClientId", _contextClientId));
claimsIdentity.AddClaim(new Claim("ClientSecret", _contextCleintSecret));
await Task.Run(() => context.Validated(claimsIdentity));
}
}