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和秘密,以获得完全授权.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


c语言数组越界会怎么样
c语言指针怎么等于数组
c语言数组怎么存入文字
c语言中怎么显示数组
c语言数组元素怎么选
c语言数组怎么累加
c语言数组符号怎么输入
c语言怎么用长数组
c语言数组函数怎么输入
c语言数组怎么去掉差异
c语言怎么求解数组
c语言数组怎么用变量
c语言怎么申明数组
c语言怎么控制数组
c语言怎么计算数组长度
c语言数组怎么插星号
c语言数组怎么加长度
c语言中怎么输出数组
c语言怎么记住数组边界
c语言数组怎么输入符号