Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在WebAPI中传递和验证查询字符串中的OWIN持有者令牌

在WebAPI中传递和验证查询字符串中的OWIN持有者令牌
EN

Stack Overflow用户
提问于 2014-02-21 04:34:44
回答 3查看 13.8K关注 0票数 18

简而言之:我需要将OWIN承载令牌作为查询参数传递和验证,而不是在请求标头中。

然后,如何根据该令牌字符串将该方法设置为authorized?

背景:我想调用一个webapi方法来以流的形式下载文件(并且永远不希望用户从一个已知的文件位置下载它)。

如果我还需要设置一个自定义的请求头,也就是持有者令牌,我就不能让它工作。

我应该能够在查询字符串中传递令牌--但是不知道如何获得令牌来验证用户。

我需要过滤吗?我是否需要特殊索赔等?webapi方法是否需要将"access_token“作为函数参数之一?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-21 08:16:32

票数 9
EN

Stack Overflow用户

发布于 2014-08-27 11:02:33

为了完整性,here's提供了另一个简洁的解决方案。

摘录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
app.Use(async (context, next) =>
{
    if (context.Request.QueryString.HasValue)
    {
        if (string.IsNullOrWhiteSpace(context.Request.Headers.Get("Authorization")))
        {
            var queryString = HttpUtility.ParseQueryString(context.Request.QueryString.Value);
            string token = queryString.Get("access_token");

            if (!string.IsNullOrWhiteSpace(token))
            {
                context.Request.Headers.Add("Authorization", new[] { string.Format("Bearer {0}", token) });
            }
        }
    }

    await next.Invoke();
});
票数 29
EN

Stack Overflow用户

发布于 2016-10-31 13:09:26

或者像这样做

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
    {
        Authority = IdentityConfig.Authority,
        RequiredScopes = new[] { "api" },
        TokenProvider = new OAuthBearerAuthenticationProvider
        {
            OnRequestToken = ctx =>
            {
                if (String.IsNullOrWhiteSpace(ctx.Token) && ctx.Request.QueryString.HasValue)
                {
                    NameValueCollection parsedQuery = HttpUtility.ParseQueryString(ctx.Request.QueryString.Value);
                    ctx.Token = parsedQuery["access_token"];
                }

                return Task.FromResult(0);
            }
        }
    });
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21925367

复制
相关文章
C#在WINForm程序中通过三种方式创建XML文件
string path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
zls365
2022/01/14
1.6K0
C#在WINForm程序中创建XML文件
string path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
zls365
2021/02/26
2.4K0
C#通过XPath解析xml文件
xpath语法讲解:http://www.w3school.com.cn/xpath/xpath_syntax.asp
提莫队长
2019/02/21
1.5K0
Oracle通过指令创建用户
Oracle作为世界上使用最广泛的关系数据库,对于客户很多每天海量数据的公司是首要选择。我们公司在双十一期间,曾发生过每网点每天1G多的扫描数据量,全国有六千多个网点,每天每时不停读写数据库,而数据库仅仅是变慢了而没有崩溃。oracle强大,也有进不去的时候。或者需要对用户管理,此时可以参考如下方法。命令为官方,个人总结。(双斜杠后面为注释)
星哥玩云
2022/08/17
5760
oracle 创建用户命令
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/144275.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/31
1.1K0
【C#】创建、解析 xml 文件(XmlDocument 方式)
本文使用 System.Xml 中的 XmlDocument 解析 xml 格式的文件。另外,由于我是粗略的看了下官方文档和一些博客,可能会有许多错误的地方,望指出。
全栈程序员站长
2022/09/06
1.7K0
如何在Linux中创建文件?多个文件创建操作命令。
如果文件file1.txt不存在,则上面的命令将创建该文件,否则,它将更改其时间戳。
用户5005176
2021/08/10
39.1K0
【DB笔试面试511】如何在Oracle中写操作系统文件,如写日志?
可以利用UTL_FILE包,但是,在此之前,要注意设置好UTL_FILE_DIR初始化参数。
AiDBA宝典
2019/09/30
28.8K0
【DB笔试面试511】如何在Oracle中写操作系统文件,如写日志?
如何在PHP中解析XML
XML解析器是一个程序,它可以将XML文档或代码转换为XML文档对象模型(DOM)对象。
Lemon黄
2020/07/07
3.6K0
oracle命令创建新用户
Windows需要sqlplus命令框,获取CMD窗口下输入sqlplus(需要先安装成功oracle)
全栈程序员站长
2022/08/31
1.4K0
oracle命令创建新用户
git命令中带有特殊符号如@
使用带用户密码clone的方式: git clone https://username:password@remote 当username和password中含有特殊符号会导致出错, 因为为http的请求,所以需要将特殊符号encode成url格式的 java使用: String c = java.net.URLEncoder.encode(".","utf-8"); System.out.println(c); 源文档 <http://blog.csdn.net/qq1142003960/article/
千往
2018/01/24
2.1K0
Maven通过命令创建web项目
mvn archetype:create -DgroupId=com.learn -DartifactId=LearnNew -DarchetypeArtifactId=maven-archetype-webapp
程序新视界
2022/11/30
3180
Maven通过命令创建web项目
oracle解析xml
这个方法只适合clob比较短的xml,如果xml字段过大会报错需要用SUBSTR()函数来切割
overme
2022/01/17
1.5K0
oracle解析xml
OpenStack通过命令创建虚拟机
查看网络列表 [root@controller ~]# openstack network list ID Name Subnets 0419d666-2a1e-4c5f-9331-b54ab7718b8b public e97beba0-d8ae-4bc6-9497-abad9200cb60 36878f8d-9df4-4e8a-9972-4c236d9c9eca private 2e2086da-6acb-499e-a22e-a3906bcf48e7 查看虚拟机类型列表 [root@controlle
院长技术
2020/06/13
1.5K0
C# 反射 通过类名创建类实例
“反射”其实就是利用程序集的元数据信息。 反射可以有很多方法,编写程序时请先导入 System.Reflection 命名空间。
跟着阿笨一起玩NET
2018/09/19
3.5K0
如何在js中创建对象
七夕临近了,没有对象的来创建一个吧 使用对象字面量: const o = { name: "zehan", greeting() { return `Hi, 我是${this.name}`; } }; o.greeting(); // "Hi, zehan" 使用构造函数: function Person(name) { this.name = name; } Person.prototype.greeting = function () { return `Hi, 我是
ZEHAN
2020/09/23
7.6K0
如何在Mac中创建MiniKube
Minikube是一个工具,可以在本地轻松运行Kubernetes。 Minikube在笔记本电脑的VM中运行单节点Kubernetes集群,供希望尝试Kubernetes或日常开发的用户使用。
方志朋
2022/05/08
2.4K0
如何在Mac中创建MiniKube
如何在Dynamo中创建UI
本文介绍了如何在Dynamo中创建UI,通过使用WPF技术实现了窗口的创建和交互。首先介绍了IronPython和Dynamo的基础知识,然后讲解了实现原理和准备工作。最后通过具体的操作步骤和代码示例讲解了如何在Dynamo中创建UI。
企鹅号小编
2018/01/05
2.1K0
如何在Dynamo中创建UI
oracle创建数据库命令「建议收藏」
2. 创建表空间 CREATE TABLESPACE DATA DATAFILE ‘D:\oracle\DATA\DATA.ORA’ size 10G autoextend on next 1M Maxsize unlimited logging extent management local segment space management auto; 3.创建临时空间 CREATE TEMPORARY TABLESPACE DATA_TEMP TEMPFILE ‘D:\oracle\DATA\DATA_TEMP.ORA’ size 1G EXTENT MANAGEMENT LOCAL UNIFORM SIZE 5M; 4.创建用户并授权 CREATE USER ceshi IDENTIFIED BY ceshi DEFAULT TABLESPACE DATA TEMPORARY TABLESPACE DATA_TEMP; ALTER USER ceshi ACCOUNT UNLOCK; GRANT DBA TO ceshi; GRANT CONNECT TO ceshi; grant create any sequence to ceshi; grant drop any sequence to ceshi; grant select any sequence to ceshi; 5.用户解锁 及修改密码 conn /as sysdba; alter user ceshi account unlock; alter user ceshi identified by password;
全栈程序员站长
2022/11/09
3.4K0
oracle创建数据库命令「建议收藏」
C# XML操作
1.XML帮助类 using System; using System.Collections.Generic; using System.Text; using System.Xml; using System.Data.SqlClient; using System.Data; using System.IO; using System.Xml.Serialization; namespace AutoO2O.Common { public class XmlHelper : XmlDocum
用户1055830
2018/01/18
1K0
C# XML操作

相似问题

如何在oracle中创建xml

14

如何在Oracle中通过xmltype解析XML

11

如何通过c# (如<Mode Name=“文本”>)读取XML

28

如何在MySQL查询中使用oracle命令如"break on“

32

使用c#和oracle创建xml文件

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文