【问题标题】:Logging response and request to OAuth provider记录对 OAuth 提供者的响应和请求
【发布时间】:2014-05-30 01:29:36
【问题描述】:

有没有办法从 OAuth 提供的请求中捕获响应?具体来说,我需要记录来自OAuthAuthorizationServerProvider.GrantResourceOwnerCredentials() 的请求和响应。

我已尝试扩展OwinMiddleware 并覆盖Invoke,如this post 所示,但我无法读取响应正文。我想使用this post 演示的消息处理程序,但我的AppBuilder 对象上没有UseHttpMessageHandler

任何帮助将不胜感激。 谢谢!

更新

修改Brock的优秀video中提供的例子,下面是我需要做的:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.Use(typeof(MW1));

        app.Map("/api", fooApp => {
            fooApp.Use<MW2>();
        });
    }
}

public class MW1 {
    Func<IDictionary<string, object>, Task> next;
    public MW1(Func<IDictionary<string, object>, Task> next) {
        this.next = next;
    }

    public async Task Invoke(IDictionary<string, object> env) {
        var ctx = new OwinContext(env);
        await next(env);
        // I need to be able to read: <h1>MW2 called</h1> written by MW2
        var body = ctx.Response.Body;
        // body.CanRead = False
    }
}

public class MW2 {
    Func<IDictionary<string, object>, Task> next;
    public MW2(Func<IDictionary<string, object>, Task> next) {
        this.next = next;
    }

    public async Task Invoke(IDictionary<string, object> env) {
        var ctx = new OwinContext(env);
        await ctx.Response.WriteAsync("<h1>MW2 called</h1>");
        await next(env);
    }
}

我实际上需要读取从 OAuth 提供者发送的响应,但我认为这将是相同的过程。

【问题讨论】:

    标签: asp.net-web-api oauth-2.0 owin


    【解决方案1】:

    为什么不实现位于 OAuth AS 中间件前面的 OWIN 中间件组件?

    【讨论】:

    • 对不起,这一切对我来说都是新的。你能说得更详细些吗?
    • 这是我在 OWIN/Katana 上进行的 UG 演讲的视频:brockallen.com/2014/02/28/lidnug-intro-to-owin-and-katana
    • 很棒的演讲,布洛克。我学到了很多好东西。你能看看我的更新吗?是否可以从 Invoke 方法中读取响应正文?
    • 你需要用你自己的替换 OWIN 流。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    • 2023-04-02
    • 2020-03-13
    • 2016-05-01
    相关资源
    最近更新 更多