#c# #asp.net-mvc #azure #azure-active-directory #saml-2.0
#c# #asp.net-mvc #azure #azure-active-directory #saml-2.0
Вопрос:
Я настроил приложение Onpremise MVC с помощью Azure App Proxy и единого входа SAML.
Когда я просматриваю ниже URL-адрес доступа пользователя к приложению onpremise, я могу перенаправить на приложение onpremise.
https://myapps.microsoft.com/signin /….
Но SAMLResponse отсутствует в запросе.Params.Keys.
Я могу получить SAMLResponse запроса в Fiddler, и когда я его декодирую, я получил все необходимые зарегистрированные утверждения, связанные с пользователем.
Но из C # я не могу получить SAMLResponse из запроса.Параметры.
Я использую приведенный ниже код для чтения утверждений.
foreach (string s in Request.Params.Keys)
{
if (s.ToString() == "SAMLResponse") // SAMLResponse is missing from Request.Params.Keys, but from Fiddler, I' able to view SAMLResponse
{
rawSamlData = Request.Params[s];
break;
}
}
if (rawSamlData != null)
{
byte[] samlData = Convert.FromBase64String(rawSamlData);
// read back into a UTF string
string samlAssertion = Encoding.UTF8.GetString(samlData);
XmlDocument doc = new XmlDocument();
XmlNamespaceManager xMan = new XmlNamespaceManager(doc.NameTable);
xMan.AddNamespace("saml2p", "urn:oasis:names:tc:SAML:2.0:protocol");
xMan.AddNamespace("saml2", "urn:oasis:names:tc:SAML:2.0:assertion");
xMan.AddNamespace("ds", "http://www.w3.org/2000/09/xmldsig#");
doc.LoadXml(Encoding.UTF8.GetString(samlData));
XmlNode xNode = doc.SelectSingleNode("/saml2p:Response/saml2:Assertion/saml2:AttributeStatement/saml2:Attribute[@Name='http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress']", xMan);
string NewEmailAddressCliams = null;
foreach (XmlNode x in xNode)
{
NewEmailAddressCliams = x.InnerText; // Email address returned from claim.
}
}
Если я получу SAMLResponse в Fiddler, то я должен получить SAMLResponse и из C #, используя Request .Параметры, но этого не происходит.
Пожалуйста, помогите мне в этом.
Комментарии:
1. Привет, @Chandra, запрос. Параметры — это комбинация пар ключей / значений (коллекция), которая уже содержит вашу информацию SAML . вам нужно пройти через него, чтобы получить точные данные.
Ответ №1:
Перемещение ответа из комментариев,
Request.Params
представляет собой комбинацию пар ключей / значений (коллекция), которая уже содержит вашу информацию SAML.вам нужно пройтись по нему, чтобы получить точные данные.