Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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# 如何进行应用程序到应用程序(服务器到服务器)的身份验证,OAuth 2.0,Web API 2.0_C#_Asp.net Mvc_Oauth 2.0_Asp.net Web Api2_Restful Authentication - Fatal编程技术网

C# 如何进行应用程序到应用程序(服务器到服务器)的身份验证,OAuth 2.0,Web API 2.0

C# 如何进行应用程序到应用程序(服务器到服务器)的身份验证,OAuth 2.0,Web API 2.0,c#,asp.net-mvc,oauth-2.0,asp.net-web-api2,restful-authentication,C#,Asp.net Mvc,Oauth 2.0,Asp.net Web Api2,Restful Authentication,我参与的项目有两个独立的ASP.NETMVC5应用程序。一个使用另一个作为服务。基本上,其中一个应用程序是一个配置文件服务,它拥有用户的所有配置文件信息,以便将来其他应用程序可以使用该服务,用户不必设置多个帐户。这些应用程序是组织内部的。对于身份验证和授权,我们使用Windows身份验证和智能卡。配置文件服务应用程序使用Web API 2.0。我还没有建立OAuth2.0 问题:现在,任何知道如何向配置文件服务发送请求的人都可以这样做(比如键入带有查询字符串的url) 我试图实现的目标:我想授权

我参与的项目有两个独立的ASP.NETMVC5应用程序。一个使用另一个作为服务。基本上,其中一个应用程序是一个配置文件服务,它拥有用户的所有配置文件信息,以便将来其他应用程序可以使用该服务,用户不必设置多个帐户。这些应用程序是组织内部的。对于身份验证和授权,我们使用Windows身份验证和智能卡。配置文件服务应用程序使用Web API 2.0。我还没有建立OAuth2.0

问题:现在,任何知道如何向配置文件服务发送请求的人都可以这样做(比如键入带有查询字符串的url)

我试图实现的目标:我想授权我的其他应用程序(目前,只有那一个…将来,更多)。我不希望请求基于使用应用程序的用户的授权,而是基于应用程序本身。换句话说,如果对配置文件服务的请求来自该应用程序,无论谁登录并使用它,配置文件服务都会将其视为授权请求。。。如果它来自其他任何地方,它就会被拒绝

我已经做了一些研究。我找不到任何明确说明如何设置的内容。我已经找到了一些关于如何让你的应用程序专门为谷歌服务或Twitter服务授权的资料。。。这告诉我如何设置客户端应用程序,而不是服务器应用程序(但即使是客户端设置,我也不确定是否符合我的特定需求,因为它是一个内部应用程序,因为我不知道谷歌服务是如何工作的,等等)。OAuth2.0和令牌似乎是一条出路,但我如何实现它呢?我需要真正具体的,一步一步的答案(希望有一些代码)

事先非常感谢你。我会经常回来检查。如果你需要更多信息,请告诉我

编辑:
哦我忘了提!我们使用的是HTTPS,不是HTTP。。。这有什么关系吗?

OAuth有不同的授权类型,您需要的是“客户端凭据”来授权应用程序本身。这与您在google/facebook上看到的不同,因为没有重定向/浏览器交互

POST https://oauthEndpointurl/token?grant_type=client_credentials&client_id=CLIENT_ID&client_secret=CLIENT_SECRET
客户端ID和客户端机密被发送到服务器,然后返回令牌,可能还返回刷新令牌,具体取决于您的实现

然后,您所需要做的就是将令牌发送回请求的头中。(如果您使用的是库,则它已被处理。)

有关更多详细信息,请在DO上查看本文:


非常感谢您。我会让你知道这是怎么回事,如果我有进一步的问题。我试着给你的答案加上一点,但我还没有足够的机会让它表现出来。另外,如果有人有什么想补充的,我真的很乐意读更多。。。哦我忘了提!我们使用的是HTTPS,不是HTTP。。。这有什么关系吗?没有,https是好的,应该是。因为您没有提到特定的Oauth库,所以我不能说得太具体,但这是它的基础。如果有更具体的问题,请告诉我,这是一种一般性的回答,但也很简单,一旦您了解了它的工作原理,您就可以选择适合您的场景的解决方案。您也可以将json web标记与Oauth一起使用。您认为OAuth2绝对是解决这个问题的方法吗?我已经和我团队的高级开发人员谈过了,他说,因为这些是内部应用程序,没有太大的风险,我们可以使用一个单独的帐户(比如使用常规用户名和密码),只需将其硬编码到客户端应用程序中。你怎么认为?如果我们要这样做,你会建议什么样的框架,我们应该怎样做?非常感谢。很抱歉再次打扰您。Oauth相对于简单身份验证的唯一真正好处是,它允许您连接可撤销的令牌,主要好处是当您有外部客户端或您在面向公众的网络上时,这样就不能使用偷取的令牌(甚至可以通过安全连接从浏览器窥探)。前端上的客户端凭据很容易;这是在后端设置它们的工作,这使得它在这个简单的情况下过于致命。非常感谢杰夫。是的,我开始想也许OAuth不适合来这里,所以我很高兴你为我证实了这一点。对如何前进有什么建议吗?我是一个身份验证和授权的白痴,但我必须弄清楚这一点,因为我是这个sprint项目中唯一被分配到这个项目的开发人员。非常感谢你抽出时间来帮助我。
"Authorization: Bearer xxxxTOKENxxxxx"