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的请求,一些参数会得到一个好奇的响应:
注意位置标题,它告诉.NET重定向到/ Account / ExternalLoginCallback,错误参数为“access_denied”.在Owin中启用一些跟踪显示有些东西在.NET或.NET中返回400,但是我不知道什么. 所以,那就是我在哪里.在我的控制器中的一个空的loginInfo对象,并证明某些Web请求出现问题.我已经发现了其他几个相关问题,但几乎没有人关注SalesForce,他们提供的答案并不真正适用(例如,我没有Google API可以启用).有什么想法如何纠正这个? 解决方法
看起来像需要重定向URI来匹配身份服务器上的URI.随着您再次重定向到登录页面,看起来像重定向URI可能与客户机密码和客户端标识不匹配.
在SalesForce身份服务器中,将有一个重定向URI,它将决定一旦认证完成后您将被重定向的路径.有时您还必须提供URI与客户端ID和秘密,以获得完全授权. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |