c# – MVC使用Salesforce的OAuth身份验证返回登录页面

前端之家收集整理的这篇文章主要介绍了c# – MVC使用Salesforce的OAuth身份验证返回登录页面前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用他们的OAuth身份验证工作流程,在.NET中针对Salesforce验证一个MVC应用程序的工作示例.我一直在引用 this walkthrough这是相当简单.这与让Google身份验证工作非常相似.它归结为使用个人帐户身份验证模板设置.NET MVC项目,并在Salesforce中启动一个新的连接的应用程序.然后,为Salesforce添加Owin.Security.Providers库,调整Startup.Auth.cs,并从Salesforce应用程序以及授权和令牌端点中包含ClientId和ClientSecret.它建议的回调URL是 http://localhost:[port]/signin-salesforce,这与用于Google身份验证的回调URL非常相似.

虽然我被重定向到Salesforce并且可以登录,但是让我回到我的MVC应用程序的握手似乎遇到了一个我无法确定的问题.我被重定向登录页面,而.NET似乎并不知道我的登录信息,虽然我绝对有一个与Salesforce的活动会话(Salesforce仪表板将自动登录我).在代码中,事情在这里开始走向一边:

// GET: /Account/ExternalLoginCallback
[AllowAnonymous]
public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{
    var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
    if (loginInfo == null)
    {
        return RedirectToAction("Login");
    }
    //more code we never reach
}

loginInfo始终为空.所以,为了弄清楚哪些请求被发送到.NET,我转向Fiddler,并遇到一个对localhost:[port] / signin-salesforce的请求,一些参数会得到一个好奇的响应:

HTTP/1.1 302 Found

Location: /Account/ExternalLoginCallback?error=access_denied

Server: Microsoft-IIS/10.0

Set-Cookie: .AspNet.Correlation.Salesforce=; path=/; expires=Thu,01-Jan-1970 00:00:00 GMT

X-SourceFiles: =?UTF-8?B?YzpcdXNlcnNcc3RldmUuY2FtaXJlXGRvY3VtZW50c1x2aXN1YWwgc3R1ZGlvIDIwMTVcUHJvamVjdHNcU2FsZXNGb3JjZUludGVncmF0aW9uXFNhbGVzRm9yY2VJbnRlZ3JhdGlvblxzaWduaW4tc2FsZXNmb3JjZQ==?=

X-Powered-By: ASP.NET

Date: Fri,20 May 2016 21:46:09 GMT

Content-Length: 0

注意位置标题,它告诉.NET重定向到/ Account / ExternalLoginCallback,错误参数为“access_denied”.在Owin中启用一些跟踪显示有些东西在.NET或.NET中返回400,但是我不知道什么.

所以,那就是我在哪里.在我的控制器中的一个空的loginInfo对象,并证明某些Web请求出现问题.我已经发现了其他几个相关问题,但几乎没有人关注SalesForce,他们提供的答案并不真正适用(例如,我没有Google API可以启用).有什么想法如何纠正这个?

解决方法

看起来像需要重定向URI来匹配身份服务器上的URI.随着您再次重定向登录页面,看起来像重定向URI可能与客户机密码和客户端标识不匹配.

在SalesForce身份服务器中,将有一个重定向URI,它将决定一旦认证完成后您将被重定向的路径.有时您还必须提供URI与客户端ID和秘密,以获得完全授权.

原文链接:https://www.f2er.com/csharp/94929.html

猜你在找的C#相关文章