我需要将更多参数传递给令牌端点
grant_type =密码&安培;用户名=爱丽丝&安培;密码= password123&安培; peop1 =值安培; PROP2 =值
获取令牌
我如何通过这些以及我可以在服务器上获取它们
答案 0 :(得分:1)
OAuth2资源所有者密码流定义了这些参数。如果您在验证用户时需要执行其他操作,则应查看隐式流 - 这样您就可以编写自定义登录屏幕以接受用户需要的任何数据。
答案 1 :(得分:1)
OWIN的解决方案,但你可以理解。
传递参数:
grant_type=password&username=Alice&password=password123&peop1=value&Prop2=value
让他们进入您的授权服务器提供商:
public class YourAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
...
public override Task ValidateTokenRequest(OAuthValidateTokenRequestContext context)
{
context.Request.Body.Position = 0;
var reader = new StreamReader(context.Request.Body);
var body = reader.ReadToEnd(); <-- you got them all!
return base.ValidateTokenRequest(context);
}
}
不要忘记在配置中传递授权服务器提供程序:
...
var options = new OAuthAuthorizationServerOptions
{
Provider = new YourAuthorizationServerProvider()
};
app.UseOAuthAuthorizationServer(options);
...
答案 2 :(得分:0)
在OWIN OAuthAuthorizationServerProvider上,您可以像这样捕获参数:
public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
{
string peop1 = context.Parameters["peop1"];
//You can pass if you need the parameter to your GrantResourceOwnerCredentials
context.OwinContext.Set<string>("as:peop1", peop1);
}
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
var peop1 = context.OwinContext.Get<string>("as:peop1");