Атрибуты Cas 4 не возвращаются в ASP - PullRequest
0 голосов
/ 12 июля 2020

У меня есть проект, который перенаправляет пользователя на сервер cas и после входа пользователя перенаправляет его на мой локальный (я использую виртуальный хост на IIS my.uk.a c .ir). Проблема в том, что когда он возвращает, он не возвращает атрибут. мой проект находится на .net4.5.2 и использую tls12

, это исходный проект, который я модифицировал. https://github.com/casinthecloud/dotnet-cas-client-demo

это ссылка на измененный проект: https://github.com/HamidRezaAshkiyan/dotnet-cas-client-demo моя модификация находится в ветке dev.

Вот мой web.config :

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="casClientConfig" type="DotNetCasClient.Configuration.CasClientConfiguration, DotNetCasClient"/>
  </configSections>
  <system.web>
    <compilation debug="true" targetFramework="4.5.2"/>
    <authentication mode="Forms">
      <forms name=".DotNetCasClientAuth" loginUrl="https://gate.uk.ac.ir" cookieless="UseCookies"/>
    </authentication>
    <httpModules>
      <add name="DotNetCasClient" type="DotNetCasClient.CasAuthenticationModule,DotNetCasClient"/>
    </httpModules>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules>
      <remove name="DotNetCasClient"/>
      <add name="DotNetCasClient" type="DotNetCasClient.CasAuthenticationModule,DotNetCasClient"/>
    </modules>
  </system.webServer>
  <casClientConfig casServerLoginUrl="https://gate.uk.ac.ir" casServerUrlPrefix="https://gate.uk.ac.ir" serverName="https://my.uk.ac.ir/" notAuthorizedUrl="~/NotAuthorized.aspx" cookiesRequiredUrl="~/CookiesRequired.aspx" redirectAfterValidation="true" gateway="false" renew="false" singleSignOut="true" ticketTimeTolerance="5000" ticketValidatorName="Cas10" proxyTicketManager="CacheProxyTicketManager" serviceTicketManager="CacheServiceTicketManager" gatewayStatusCookieName="CasGatewayStatus"/>
</configuration>

это моя индексная страница, на которую выполняется перенаправление после входа в систему:

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.Master" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="dotnet_cas_client_demo.secure.index" %>

<asp:Content ID="Content1" ContentPlaceHolderID="content" runat="server">

    <ul class="nav nav-tabs">
        <li><a href="/index.aspx">Call the /index.aspx page</a></li>
        <li class="active"><a href="/secure/index.aspx">You are on the /secure/index.aspx page</a></li>
        <!-- #### change with your own CAS server and your host name #### -->
        <li><a href="http://gate.uk.ac.ir/logout?service=https://my.uk.ac.ir/">Call the CAS logout</a></li>
    </ul>
    <h3>
        <p>username: <span id="username" runat="server" /></p>
        
        <p>AttributeCount: <span id="attributes" runat="server" /></p>
        <p>Attribute: <span id="attribute" runat="server" /></p>
        

    </h3>

</asp:Content>

это внутренний код:

using System;

namespace dotnet_cas_client_demo.secure
{
    public partial class index : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // get the current authenticated user
            username.InnerText = System.Web.HttpContext.Current.User.Identity.Name;

            attributes.InnerText = CasAuthentication.CurrentPrincipal.Assertion.Attributes.Count.ToString();
        }
    }
}

Я не уверен, что правильный способ получения атрибутов или нет.

Я пробовал это решение для java, но мне это не помогло. К клиенту не приходят атрибуты

там, где аналогичная проблема на php, и мои коллеги решили ее с помощью протокола cas 3, и я видел подобное в ответе выше.

1 Ответ

0 голосов
/ 12 июля 2020

После долгих поисков в Google я обнаружил, что эта библиотека не поддерживает протокол cas 3, и я нашел другую библиотеку, которая работает. net ядро ​​3 и поддержка 3 по умолчанию:

это помогло мне получить атрибуты.

Библиотека Apereo работает над поддержкой протокола 3.

...