OAuth
認証ワークフローを使用して、Salesforceに対して.NETで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 OAuth認証がログインページに戻る
私はSalesforceへリダイレクトされていますし、ログインすることができますが、戻って私のMVCアプリケーションに私を返すハンドシェイクは、私は見極めることができない問題が発生しているようです。私はログインページにリダイレクトされ、Salesforceとのアクティブセッションが確実にあるにもかかわらず、.NETはログイン情報を認識していないようです(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
は常にnullです。だから、把握する.NETへのリクエストのどのように送られている、私はバイオリン弾きになって、好奇心旺盛な応答を取得するパラメータの束とlocalhost:[port]/signin-salesforce
に対する要求が発生しました:
HTTP/1.1 302 ?
場所:/アカウント/ ExternalLoginCallbackエラー=
サーバーACCESS_DENIED:マイクロソフト-IISを/ 10.0
のSet-Cookie:.AspNet.Correlation.Salesforce =;パス= /;期限切れになるには=木、01-JAN-1970 00:00:00 GMT
X-、ソースファイル:= UTF-8 B YzpcdXNlcnNcc3RldmUuY2FtaXJlXGRvY3VtZW50c1x2aXN1YWwgc3R1ZGlvIDIwMTVcUHJvamVjdHNcU2FsZXNGb3JjZUludGVncmF0aW9uXFNhbGVzRm9yY2VJbnRlZ3JhdGlvblxzaWduaW4tc2FsZXNmb3JjZQ == =
X-Poweredのバイ:????ASP.NET
日:金、2016年5月20日21時46分09秒GMT
のContent-Length:0
がLocationヘッダーに注意してください。これは、.NETに/Account/ExternalLoginCallback
へのリダイレクトを、エラーパラメータ "access_denied"で指示します。 Owin
にいくつかのトレースを有効にすると、何かは400 .NETまたは.NET、のいずれかに戻っていることが明らかになったが、私は何を知りません。
だから私はここにいる。 A null
コントローラ内のloginInfoオブジェクトと、一部のWeb要求で何かが間違っているという証拠。私は他のいくつかの関連する質問を熟読しましたが、ほとんどSalesForceに焦点を当てておらず、実際には適用できない回答を提供しています(たとえば、私は有効にするためのGoogle+ APIはありません)。これを修正する方法に関するアイデア? LOGININFOは常にそれが本当にすべきではないとき、バックナルくると誰も持つ問題へ
あなたはこの解決策を見つけましたか?私は同じ問題があります。 – vaibinewbee
@vaibinewbee残念ながら、私はしませんでした。私はいくつかの研究のためにこれをやっていましたが、完了する必要はありませんでしたので、私は解決策を探し続けました。この質問に対する活動が完全に欠如していることを考慮すると、Salesforceのフォーラムにお問い合わせいただくか、Salesforceにご連絡ください。あなたがそれを解決したら、答えをここで共有してください。私は偉大な答えに使用されるのを待っている緑のチェックマークを持っています。 – Ellesedil
外部認証を 'localhost'でテストしないでください。実世界のドメインで試してみて、結果を教えてください。 –