相关疑难解决方法(0)

ASP.NET Web API 2:如何使用外部身份验证服务登录?

根据这篇文章http://www.asp.net/web-api/overview/security/external-authentication-services ...我能够使用本地身份验证服务登录(使用新的Asp.net身份框架)

但无法找到一个walktrough来正确调用(从移动应用程序或邮递员)Visual Studio 2013 SPA模板中生成的默认Web api.

谁能帮我?

.net asp.net oauth-2.0 asp.net-web-api asp.net-identity

48
推荐指数
2
解决办法
4万
查看次数

如何使用外部登录提供程序创建刷新令牌?

我在网上搜索过,无法找到解决问题的方法.我正在我的应用中实施OAuth.我正在使用ASP .NET Web API 2和Owin.场景是这样的,一旦用户请求令牌端点,他或她将接收访问令牌以及刷新令牌以生成新的访问令牌.我有一个类帮助我生成一个刷新令牌.就这个 :

   public class SimpleRefreshTokenProvider : IAuthenticationTokenProvider
    {


       private static ConcurrentDictionary<string, AuthenticationTicket> _refreshTokens = new ConcurrentDictionary<string, AuthenticationTicket>();



    public async Task CreateAsync(AuthenticationTokenCreateContext context)
        {

            var refreshTokenId = Guid.NewGuid().ToString("n");
            using (AuthRepository _repo = new AuthRepository())
            {
                var refreshTokenLifeTime = context.OwinContext.Get<string>                                    ("as:clientRefreshTokenLifeTime");
                var token = new RefreshToken() 
                { 
                    Id = Helper.GetHash(refreshTokenId),
                    ClientId = clientid, 
                    Subject = context.Ticket.Identity.Name,
                    IssuedUtc = DateTime.UtcNow,
                    ExpiresUtc = DateTime.UtcNow.AddMinutes(15)
                };
                context.Ticket.Properties.IssuedUtc = token.IssuedUtc;
                context.Ticket.Properties.ExpiresUtc = token.ExpiresUtc;
                token.ProtectedTicket = context.SerializeTicket();
                var result = await _repo.AddRefreshToken(token);
                if …
Run Code Online (Sandbox Code Playgroud)

asp.net oauth

20
推荐指数
3
解决办法
6424
查看次数

使用WebApi和外部登录的ASP.NET标识

我又被卡住了!我正在尝试使用个人帐户使用ASP.NET身份实现安全的WebApi服务.WebApi服务将由使用phonegap开发的移动应用程序使用.我的phonegap应用程序使用Facebook和Twitter进行登录,我已在客户端上完美地实现了这一点.

我已经从visual studio模板创建了一个SPA项目,我已经使用fiddler和chrome dev工具测试了监控HTTP请求的登录过程.我使用邮递员尝试了以下请求

得到: http://localhost:49577/api/Account/ExternalLogins?returnUrl=/&generateState=true

响应:

[{
        "Name": "Facebook",
        "Url": "/api/Account/ExternalLogin?provider=Facebook&response_type=token&client_id=self&redirect_uri=http%3A%2F%2Flocalhost%3A49577%2F&state=jpePf27F3ufkCCEldFdoOVMEGBGTEO1CrRdUQ3bHEP01",
        "State": "jpePf27F3ufkCCEldFdoOVHSGBGTEO1CrRdUQ3bHEP01"
}]
Run Code Online (Sandbox Code Playgroud)

然后我调用GET:http://localhost:49577/api/Account/ExternalLogin?provider=Facebook&response_type=token&client_id=self&redirect_uri=http%3A%2F%2Flocalhost%3A49577%2F&state=jpePf27F3ufkCCEldFdoOVMEGBGTEO1CrRdUQ3bHEP01 调用AccountsController的GetExternalLogin方法.然后,当用户未经过身份验证时,它会返回ChallengeResult的实例.

这是我被困的地方.Q1:ChallengeResult强制301重定向到facebook登录页面,带有一些查询字符串参数.我不想要这个,我希望它给我参数,但让我处理我的ajax请求中的日志记录.我试过评论这行代码

Request.GetOwinContext().Authentication.Challenge(LoginProvider);
Run Code Online (Sandbox Code Playgroud)

但我最终得到了401没有别的,我怎么能控制ChallegeResult的反应?

Q2.此外,在我从facebook获取访问令牌之后,我无法弄清楚接下来是什么,如果我已经获得访问令牌,我应该调用哪个webapi端点,我应该传递给它什么?

我整天都用Google搜索,但找不到任何能回答我问题的内容.任何帮助,将不胜感激.谢谢

更新:

关于Q2; 我已经想出了下一步,那就是GET:http://localhost:49164/signin-facebook?code=...&state=...

这将返回另一个重定向到的302

http://localhost:49164/api/Account/ExternalLogin?provider=Facebook&response_type=token&client_id=self&redirect_uri=http%3A%2F%2Flocalhost%3A49164%2F&state=7oGPd37EA-nmtXPtYEQ40qnretDeKjbPEM1gNkb2DuM1
Run Code Online (Sandbox Code Playgroud)

然后返回另一个302然后重定向到

http://localhost:49164/#access_token=...
Run Code Online (Sandbox Code Playgroud)

那么如何处理来自移动非浏览器客户端的所有重定向?

UPDATE

我试图找到处理的控制器动作 http://localhost:49164/signin-facebook?code=...&state=... 可以帮助任何人吗?

更新 我已经发布了这个问题了解了很多有关facebool登录流程的信息,这可能是我之前应该做的!我仍然有一个问题,但我在这里创建了一个不同的问题,以减少混乱

asp.net-mvc-4 asp.net-web-api asp.net-identity

11
推荐指数
1
解决办法
5720
查看次数

在移动和网络数据存储上注册/登录Facebook和谷歌

我希望用户能够通过移动应用程序(android和ios)和/或网站(使用asp.net MVC构建)登录facebook/google ...

我的数据库应该存储什么才能使身份验证在移动应用和网站上运行?userId,google/facebook令牌?

我不确定如何保存用户信息.我应该把它与OWIN结合起来吗?我不太了解asp.net身份,但已经看到它与第三方提供商相当直接....问题是,如果我第一次从移动应用程序登录,我应该以编程方式将新用户添加到数据库中吗?

到目前为止,我认为这似乎是最好的链接:http://bitoftech.net/2014/07/16/enable-oauth-refresh-tokens-angularjs-app-using-asp-net-web-api-2-owin /

但我希望有一个更简单的方法.

我得到google/fb令牌并将它们发送到服务器以获取用户的ID ...

我需要做什么,以便如果google/fb用户通过网络登录,他们将被识别为同一个用户.

似乎MS已经使ASP.Net Identity能够如此容易地为Web设置社交登录,但忽略了如何使用移动设备来使用sql server db来存储用户/会员详细信息......

只是试图找出管理移动和网络用户的最佳方式

oauth single-sign-on asp.net-web-api asp.net-identity

9
推荐指数
1
解决办法
686
查看次数

ASP.NET Web API 2:通过本机移动(iOS)应用程序与外部提供程序登录

我做了很多搜索,但却找不到理想的解决方案.我知道有一个所谓的解决方案(WebApi ASP.NET身份Facebook登录)但是,解决方案的一些元素是(在我看来)严重hacky(例如,用普通帐户注册用户,然后添加外部登录,而不是而不是使用外部登录注册它们).

我希望能够在已经在iOS移动应用程序上使用Facebook SDK登录后注册和验证ASP.NET Web API 2应用程序,即我已经使用他们的SDK对Facebook进行了身份验证,现在想要无缝地使用ASP.NET Web API注册/验证.我不想使用我必须使用Web调用(/ api/Account/ExternalLogin)的过程,因为这对本机移动应用程序来说不是一个很好的用户体验.

我试过学习OWIN,但.NET框架很复杂,我在如何解决这个问题上一直在努力.

facebook ios asp.net-web-api owin asp.net-web-api2

8
推荐指数
1
解决办法
1262
查看次数

通过Android应用程序中的Facebook令牌对WebAPI进行身份验证访问

我正在尝试让我的Android应用程序登录到我的WebAPI服务.我想分享我的想法以验证它们.

如果通过WebSite访问WebAPI,则步骤如下:

1-调用WebAPI方法登录

2- WebAPI将客户端重定向到Facebook

3- Facebook登录并返回令牌

4-如果我在下次调用中使用该令牌,我将被认证为正确的用户.

这很有效.

如果通过Android APP访问WebAPI,我该如何获得访问令牌?其实我做的事情如下:

1-通过登录按钮联系Facebook

2-获取记录ID到Facebook接收令牌

3-尝试执行WebAPI调用,将Authentication:Bearer CODE添加到我的呼叫中

那时我正在徘徊..

我的应用程序现在如何才能成为特定用户?如果我执行类似的事情

GET /API/METHOD1
Authentication: Bearer CODE
Run Code Online (Sandbox Code Playgroud)

如果Android应用程序从未告诉过他,怎么知道代码是我?该应用程序是否会自动联系Facebook,以便收到"是啊!我发布该令牌,它与...相关"的答案.

或者我误解了一切?

我能弄明白的另一种方式是我必须使用"混合方法",如:

1-呼叫WebAPI(通过浏览器)2-获取重定向链接到Facebook 3-获取令牌

但是..那时,我怎么能再次在Facebook App/Facebook Site和我的Android应用程序之间切换?

对不起,我试图找出这个身份验证过程旁边的逻辑.

android facebook token asp.net-web-api

7
推荐指数
1
解决办法
3872
查看次数

使用Facebook-SDK与OWIN/Katana

我想在我的SPA WEBAPI应用程序中使用OWIN使用Facebook-SDK登录弹出窗口.VS 2013已经为facebook登录提供了一个很好的模板,但它高度依赖于我不喜欢的服务器端代码.通过使用Facebook-SDK,我可以登录到facebook并访问user_id,access_token等,在此之后,我将access_token发送到/ signin-facebook?code = [access_token],但是,我得到access_denied错误.我想这是因为我干预了owin工作流程并且不发送相关cookie.

总而言之,如果我已经拥有access_token ,是否可以绕过此图片中登录流程中的前3个步骤?

facebook-javascript-sdk asp.net-web-api single-page-application owin katana

5
推荐指数
0
解决办法
332
查看次数