У меня есть приложение MVC, которое я пытаюсь заставить использовать Salesforce в качестве sso idp.Я могу заставить его перенаправить в Salesforce для входа в систему.Но после того, как я вошел в систему, следующее не работает, как я ожидал: 1) User.Identity.IsAuthenticated остается ложным.Итак, на странице указателя отображается сообщение «Вы еще не авторизованы».даже если у меня есть логин.2) Если я нажму на ссылку «О программе», она перенаправит меня на страницу индекса, если я уже выполнил вход.Если нет, то для входа в систему Salesforce мне нужно войти, а затем перейти на страницу индекса, на которой будет отображаться сообщение «Вы еще не вошли в систему».
Ниже приведена информация о моем приложении MVC.
Web.config:
<sustainsys.saml2 entityId="http://xxxx.xxxx.com/SAML2" returnUrl="http://localhost:51048/Home/Index" authenticateRequestSigningBehavior="Never">
<nameIdPolicy allowCreate="true" format="Persistent" />
<metadata cacheDuration="PT1H" validDuration="7.12:00:00" wantAssertionsSigned="true">
<organization name="xxxx Inc" displayName="xxxx" url="https://www.xxxx.com" language="en" />
<contactPerson type="Support" email="lim.hock-chai@xxxx.com" />
<requestedAttributes>
<add friendlyName="User Name" name="urn:Username" nameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true" />
<add name="Minimal" />
</requestedAttributes>
</metadata>
<identityProviders>
<add entityId="https://xxxx.my.salesforce.com" signOnUrl="https://xxxx.xxx.my.salesforce.com/idp/login?app=xxxxxxxxxxx" allowUnsolicitedAuthnResponse="true" binding="HttpRedirect">
<signingCertificate fileName="~/App_Data/SelfSignedCert_10Oct2017.crt" />
</add>
</identityProviders>
</sustainsys.saml2>
Домашний контроллер:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
[Authorize]
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
}
Страница указателя:
@{
ViewBag.Title = "Home Page";
}
<div class="row">
@if (User.Identity.IsAuthenticated)
{
<div class="col-md-4">
<h2>Hello @User.Identity.Name</h2>
<p>
Welcome.
</p>
</div>
}
else
{
<div class="col-md-4">
<h2>Hello</h2>
<p>
You are not login yet. Click <a href="@Url.Content("~/Saml2/SignIn")">here</a> to login
</p>
</div>
}
</div>
О странице:
@{
ViewBag.Title = "About";
}
<h2>@ViewBag.Title.</h2>
<h3>@ViewBag.Message</h3>
<p>Use this area to provide additional information.</p>