c# - webapi - web api msdn




适用于Web和Mobile的ASP.NET Web API社交身份验证 (2)

您可能希望查看这一系列文章,看看它是否涵盖了您的目标:

基于令牌的身份验证使用ASP.NET Web API 2,Owin和Identity by Taiseer Joudeh(他也经常在SO上回答问题)

这些文章是关于使用OWIN创建基于令牌的身份验证服务,其中一个部分涉及使用外部登录(例如Facebook和Google+)。 这些示例主要围绕Web应用程序作为Web服务的使用者,但它也应该适用于移动应用程序。 文章有一个关联的GitHub项目和一个非常活跃的评论部分,几乎没有任何问题没有答案。

希望这可能会引导您实现目标。

我的问题有点复杂所以请耐心等待,因为我试图很好地说明我正在努力解决的问题。

目标

有一个ASP.NET网站,允许用户通过用户名/密码或社交(Facebook,Twitter,谷歌等)注册和登录也有API。 需要使用[Authorize]锁定此API。 API需要能够通过用户名/密码或社交(Facebook,Twitter,Google等)登录的移动客户端(Android,iOS等)访问。

背景

所以我做了一些网站,可以从我的目标做一两件事,但不是全部。 在线项目中有一些很好的例子,并在VS项目的示例中构建,这些示例展示了如何让用户通过社交应用程序注册和登录,但它们仅适用于网站而非移动设备。 我做了一个网站,Android应用程序使用用户名/密码对该API进行身份验证,但没有任何OAuth或社交凭据。

我开始使用此page作为参考,但我不知道如何使用它并使其适用于我的网站登录和我的移动应用程序登录。

这家伙听起来很容易,但没有显示任何代码。

是否有可以让我实现目标的教程或GitHub示例? 我基本上想要一个网站,人们可以注册用户名/密码或使用他们的社交帐户,并让用户通过移动设备进行相同的操作(注册和登录)。 移动设备基本上只使用API​​来推送/拉取数据,但我不确定如何将社交登录与我的API相结合。 我假设我需要使用OAuth并走这条路线,但我找不到任何好的例子来说明如何为网络和移动设备做这件事。

或许正确的解决方案是让网页都是cookie auth,API是一个单独的“网站”,并且都是令牌身份验证,它们都绑定到同一个数据库?


我将这个作为你问题的第二部分的单独答案添加到肯定的是,你可以将两个单独的项目绑定到同一个数据库,只需让MVC / Web Forms网站项目使用所有cookie身份验证然后拥有一个单独的Web所有令牌认证的API项目。

在我使用源代码示例的较长答案中,我基本上已经完成了将两个单独的项目合并到一个项目中,以避免冗余的模型代码和控制器代码。 就我而言,这对我来说更有意义; 但是,我倾向于说,这取决于个人偏好和项目的需要,以决定是否维护两个单独的项目,一个网站和一个Web API端点,或者将它们组合起来。

ASP.NET被设计为非常灵活,即插即用作为中间件,我可以证明我的项目已经存在并且与两个独立项目中的代码完全一致,并且现在作为一个组合项目。







oauth