Tam*_*fai 2 c# asp.net-mvc restful-authentication oauth-2.0 asp.net-web-api2
我在一个有2个单独的ASP.NET MVC 5应用程序的项目中。一个将另一个用作服务。基本上,应用程序之一是配置文件服务,它具有用户的所有配置文件信息,以便将来其他应用程序可以使用该服务,而用户不必设置多个帐户。这些应用程序是组织内部的。对于身份验证和授权,我们使用Windows身份验证和智能卡。配置文件服务应用程序使用Web API 2.0。我尚未设置OAuth 2.0。
问题:就目前而言,任何知道如何向配置文件服务发送请求的人都可以这样做(例如,输入带有查询字符串的url)。
我想要实现的目标:我想授权我的其他应用程序(目前,仅此一个……将来,还有更多)。我不希望请求基于使用该应用程序的用户的授权,而是基于应用程序本身。换句话说,如果对配置文件服务的请求来自该应用程序,无论谁登录并使用它,则配置文件服务会将其视为授权请求...如果来自其他任何地方,则将被拒绝。
我已经做了一些研究。我找不到任何明确说明如何进行设置的内容。我发现了一些有关如何使您的应用程序专门获得Google Services或Twitter服务授权的东西...告诉我如何设置客户端应用程序,而不是服务器应用程序(但是即使我不确定客户端设置,我也不确定)满足我的特定需求,因为它是内部应用程序,因为我不知道Google服务的工作方式等)。似乎可以使用OAuth 2.0和令牌,但是如何实现呢?我需要非常具体的分步解答(希望有一些代码)。
提前非常感谢您。我将经常检查。让我知道您是否需要更多信息。
编辑:哦!我忘了提!我们使用的是HTTPS,而不是HTTP ...这有什么关系吗?
OAuth具有不同的授权类型,您需要的是“客户端凭据”来授权应用程序本身。这与您在google / facebook上看到的不同,因为没有重定向/浏览器交互。
POST https://oauthEndpointurl/token?grant_type=client_credentials&client_id=CLIENT_ID&client_secret=CLIENT_SECRET
Run Code Online (Sandbox Code Playgroud)
客户端ID和客户端密钥将发送到服务器,然后返回令牌,并可能根据您的实现返回刷新令牌。
然后,您所需要做的就是将令牌发送回请求的标头中。(如果您使用的是库,那么该库已经被处理。)
"Authorization: Bearer xxxxTOKENxxxxx"
Run Code Online (Sandbox Code Playgroud)
在DO上查看此文章以了解更多详细信息:
https://www.digitalocean.com/community/tutorials/an-introduction-to-oauth-2