【问题标题】:How to pass some more parameters to token endpoint web api 2如何将更多参数传递给令牌端点 web api 2
【发布时间】:2019-02-26 17:21:33
【问题描述】:

我需要将更多参数传递给令牌端点

grant_type=password&username=Alice&password=password123&peop1=value&Prop2=value

获取令牌

我如何传递这些以及我可以在服务器上的何处获取它们

【问题讨论】:

  • 查看 Startup.cs 和 ApplicationOAuthProvider.cs,现在似乎不可能。

标签: asp.net-web-api asp.net-identity


【解决方案1】:

OAuth2 资源所有者密码流定义了这些参数。如果您在对用户进行身份验证时需要做其他事情,您应该查看隐式流程 - 这样您就可以编写自定义登录屏幕来接受您需要从用户那里获得的任何数据。

【讨论】:

    【解决方案2】:

    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);
    ...
    

    【讨论】:

    • 没有更简洁的方法从body中获取参数吗?
    【解决方案3】:

    在您的 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");
    

    【讨论】:

    • 这个对我有用,而且它是强类型的。谢谢^-^
    猜你喜欢
    • 2017-01-31
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 2021-04-13
    • 2021-09-02
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多