Я искал доски, и пока я нашел информацию о CAS (службе централизованной аутентификации), я не нашел никакой информации, касающейся того, как можно было бы получить имя пользователя с сервера CAS после перенаправления обратно в клиентское приложение.Как я могу получить имя пользователя с сервера CAS в C# MVC
При использовании dotNetCasClient.dll я руководствовался инструкциями по настройке моего файла Web.config в соответствии с шагами по GitHub. Ниже приведен код web.config: (Примечание: я должен был заменить имена серверов по причинам конфиденциальности)
?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=301880
-->
<configuration>
<!-- CAS Configuration -->
<configSections>
<section name="casClientConfig" type="DotNetCasClient.Configuration.CasClientConfiguration, DotNetCasClient" />
</configSections>
<casClientConfig casServerLoginUrl="https://mycasserver/login"
casServerUrlPrefix="https://mycasserver"
serverName="https://myappserver"
notAuthorizedUrl="~/Home"
cookiesRequiredUrl="~/Home/CookiesRequired"
redirectAfterValidation="true"
gateway="false"
renew="false"
singleSignOut="true"
ticketTimeTolerance="5000"
ticketValidatorName="Cas20"
serviceTicketManager="CacheServiceTicketManager"
gatewayStatusCookieName="CasGatewayStatus" />
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<!--<modules runAllManagedModulesForAllRequests="true">-->
<modules>
<remove name="DotNetCasClient" />
<add name="DotNetCasClient" type="DotNetCasClient.CasAuthenticationModule,DotNetCasClient" />
</modules>
</system.webServer>
<!-- /CAS Configuration -->
<connectionStrings configSource="connectionStrings.config" />
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.DataAccess.Client" />
<!-- If any should be in the machine.config -->
<add name="Oracle Data Provider for .NET"
invariant="Oracle.DataAccess.Client"
description="Oracle Data Provider for .NET"
type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<!-- CAS Configuration -->
<add key="enableSimpleMembership" value="false" />
<add key="autoFormsAuthentication" value="false" />
<!-- /CAS Configuration -->
</appSettings>
<system.web>
<sessionState mode="StateServer" />
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<!-- CAS Configuration -->
<authentication mode="Forms">
<forms loginUrl="https://mycasserver/login"
cookieless="UseCookies"
path="https://myappserver" />
</authentication>
<httpModules>
<add name="DotNetCasClient" type="DotNetCasClient.CasAuthenticationModule,DotNetCasClient" />
</httpModules>
<!-- /CAS Configuration -->
</system.web>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp"
extension=".cs"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4"
compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript"
extension=".vb"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4"
compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>
</configuration>
В соответствии с инструкциями в отношении Клиента CAS, я также поместил авторизовать тег выше моей страницы входа в систему, так что когда пользователь хочет войти в систему, они вместо этого перенаправляются на вход в CAS-сервер, а после успешной проверки «Action» ActionResult переадресовывает пользователя на определенную страницу.
[Authorize]
public ActionResult Login()
{
return RedirectToAction("Index", "Departments");
}
Я успешно протестировал реализацию CAS и может подтвердить, что он работает, как ожидалось, однако я полностью потерял в отношении того, как я бы идти о получении информации от сервера CAS после проверки пользователя.
Любая помощь приветствуется, и если это дубликат, я приношу свои извинения, так как не смог найти что-либо подобное при поиске себя.
Спасибо за ответ. Из того, что я собрал, DotNetCasClient не может получить атрибуты, поскольку это функция, которая была реализована с помощью протоколов CAS 3.0, а DotNetCasClient в настоящее время не поддерживает указанные протоколы. Я действительно работаю с коллегой, чтобы включить протокол 3.0 с использованием OWIN/KATANA, поэтому я надеюсь, что мы сможем добиться достойного прогресса довольно быстро. –