Я пытаюсь настроить аутентификацию Google App Suites с помощью моего приложения .NET 4.6.
Я использую пакет nuget Microsoft.Owin.Security.WsFederation OWIN, вот код, который я использую при запуске:
app.UseWsFederationAuthentication(new WsFederationAuthenticationOptions
{
MetadataAddress = "URL TO HOSTED META DATA XML",
Wtrealm = "blah",
TokenValidationParameters = new TokenValidationParameters
{
ValidateAudience = false,
ValidAudiences = new List<string>()
{
wtrealm,
validAudience
}
},
SignInAsAuthenticationType = "Cookies"
});
Я получаю сообщение об ошибке «InvalidOperationException: Sequence не содержит элементов».Я подозреваю, что что-то не так с файлом метаданных, но я не уверен, что (я получил этот файл от администратора Google App Suites).Я размещаю этот файл метаданных в своем приложении .NET, так как WSFed требует URL.Любая идея, что я могу делать неправильно?
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" entityID="https://accounts.google.com/o/saml2?idpid=C03tzverc" validUntil="2023-08-06T13:59:09.000Z">
<md:IDPSSODescriptor WantAuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<md:KeyDescriptor use="signing">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>MIIDdDCCA...REMOVED THE REST</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>
<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>
<md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://accounts.google.com/o/saml2/idp?idpid=C03tzverc"/>
<md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://accounts.google.com/o/saml2/idp?idpid=C03tzverc"/>
</md:IDPSSODescriptor>
</md:EntityDescriptor>
Вот полный стек:
[InvalidOperationException: последовательность не содержит элементов] System.Linq.Enumerable.First (IEnumerable`1источник) +264 Microsoft.IdentityModel.Protocols.d__1.MoveNext () в c: \ workspace \ WilsonForDotNet45Release \ src \ Microsoft.IdentityModel.Protocol.Extensions \ Configuration \ WsFederationConfigurationRetriever.cs: 100 System.Runtime.TrowserAЗадача задачи) +99 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача задачи) +58 System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (Задача задачи) +25 Microsoft.IdentityModel.Protocols.x3. (in.рабочее пространство \ WilsonForDotNet45Release \ src \ Microsoft.IdentityModel.Protocol.Extensions \ Configuration \ ConfigurationManager.cs: 198
[InvalidOperationException: IDX10803: Невозможно создать для получения конфигурации из: 'УДАЛЕНО ДЛЯ ПРИЧИН БЕЗОПАСНОСТИ'.] Microsoft.IdentityModel.Protocols.d__3.MoveNext () в c: \ workspace \ WilsonForDotNet45Release \ src \ Microsoft.IdentityModel.Protocol.Extensions \ Configuration \ ConfigurationManager.cs: 212 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача задачи) + время работы системы задач. + SystemC.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача) +58 Microsoft.Owin.Security.WsFederation.d__c.MoveNext () +432 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (резервная задача). Служебная служба.Задача задачи) +58 Microsoft.Owin.Security.Infrastructure.d__b.MoveNext () +282 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Задача задачи) +99 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuggerMicrosoft.Owin.Security.Infrastructure.d__8.MoveNext () +275 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача-задача) +99 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) +58 Microsoft.Owin.Security.Infrastructure.d__5.MoveNext () +160 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача задачи) +99 System.Runtime.CompilerServices.TccesskAwaiter.HugleND+58 Microsoft.Owin.Security.Infrastructure.d__0.MoveNext () +815 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (целевая задача) +99 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAgnault.Og.Host.SystemWeb.IntegratedPipeline.d__5.MoveNext () +182 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача задачи) +99 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAInfrastructure.d__0.MoveNext () +638 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача задачи) +99 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) +58 Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.d__5.MoveNext () +182 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (целевая задача) +99 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSug.SystemWeb.IntegratedPipeline.d__2.MoveNext () +180Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.StageAsyncResult.End (IAsyncResult ar) +69 Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContext.EndFinalWork (IAsyncResult ar )Exp.IExecutionStep.Execute () +380 System.Web.HttpApplication.ExecuteStepImpl (шаг IExecutionStep) +48 System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логический и завершенный синхронно) + 159