Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Web API安全和身份验证-承载令牌_C#_Asp.net_Api_Security_Authentication - Fatal编程技术网

C# Web API安全和身份验证-承载令牌

C# Web API安全和身份验证-承载令牌,c#,asp.net,api,security,authentication,C#,Asp.net,Api,Security,Authentication,我正在学习Web API和API的一般方法 目前,我正在调查身份验证 我知道API身份验证和授权有几种方法。最常见的似乎是持票人代币 我也看到了SAML,我也知道x509(在WCF的日子里) 今天我想谈谈无记名代币。承载令牌作为标头传递。未加密的标题可能未加密?因此,可能有人在未经同意的情况下获取所述令牌并冒充用户。这是我对不记名代币的看法。今天许多流行的服务似乎都使用这种API身份验证方法 除了承载令牌之外,还有哪些其他选项,但它们或多或少与移动消息一样安全,等等 我似乎对许多身份验证方法略知

我正在学习Web API和API的一般方法

目前,我正在调查身份验证

我知道API身份验证和授权有几种方法。最常见的似乎是持票人代币

我也看到了SAML,我也知道x509(在WCF的日子里)

今天我想谈谈无记名代币。承载令牌作为标头传递。未加密的标题可能未加密?因此,可能有人在未经同意的情况下获取所述令牌并冒充用户。这是我对不记名代币的看法。今天许多流行的服务似乎都使用这种API身份验证方法

除了承载令牌之外,还有哪些其他选项,但它们或多或少与移动消息一样安全,等等

我似乎对许多身份验证方法略知一二。我正试图了解更多信息,并希望构建一个非常安全的API,允许SSO(单点登录)-如果承载令牌是一种方式,那么很好,这是非常简单和现成的解决方案。如果有更好、更安全的东西,我愿意接受,即使工作和时间远不止于此

我不知道为什么我不喜欢持币人代币的声音,但它似乎很容易被攻击和利用。特别是对于支付相关类型的服务

谢谢

承载令牌作为标头传递。标头未加密,因此,可能有人在未经同意的情况下获取所述令牌并模拟用户

虽然这可能并不总是一个理想的解决方案,但您可以确保只使用https传递数据。根据(本文中建议不要使用承载令牌的人)的说法,如果使用HTTPS传递头信息,则头信息将保持安全。此外,当您需要再次使用令牌或敏感数据时,您可以将自己的加密算法添加到令牌或敏感数据中。

请参见

头使用HTTPS加密-承载令牌对于安全性来说非常好,我现在正在我的企业应用程序中使用它。

这不是一个完整的答案,但我已经玩弄了WebAPI和令牌。承载令牌不仅仅是一些随机的字节序列。它们包含加密信息。在我的例子中,我尝试在令牌中加密客户端的ip地址,这样即使有人劫持它,除非客户端的ip地址与令牌中包含的内容匹配,否则它也不会工作。我知道这不是一个完整的解决方案,但它起到了作用。你是如何控制来自STS服务器的令牌分发令牌的?头是加密的。我没有确切的代码,但我知道WebAPI SDK允许您覆盖令牌生成和验证的默认实现。在
OAuthBeareAuthenticationProvider
中也可能有创建一个身份验证的事件。我确实看到/发现头是加密的-这是一个额外的好处。我仍然想看看还有什么其他的选择,比如一些涉及到修改信息的东西?这真的应该是一个评论,我道歉。我对其他方法不太熟悉,但我可以说我对承载令牌提供的安全性相当满意。我将它与一个MVC Web API一起使用,通过HTTPS。