Cas 4 属性不是 return in ASP
Cas 4 attributes not return in ASP
我有一个将用户重定向到 cas 服务器的项目,在用户登录后将其重定向到我的本地(我在 IIS my.uk.ac.ir 上使用虚拟主机)。
问题是当它 return 时它没有 return 属性。
我的项目在 .net4.5.2 上并使用 tls12
这是我修改的原始项目。
https://github.com/casinthecloud/dotnet-cas-client-demo
这是 link 修改后的项目:https://github.com/HamidRezaAshkiyan/dotnet-cas-client-demo
我的修改在开发分支上。
这是我的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 解决了它,我在上面的答案中看到了类似的问题。
经过大量谷歌搜索后,我发现这个库不支持 cas 协议 3,我找到了另一个适用于 .net core 3 并默认支持 3 的库:
https://github.com/akunzai/GSS.Authentication.CAS
它帮助我获得属性。
Apereo 库正在努力支持协议 3。
我有一个将用户重定向到 cas 服务器的项目,在用户登录后将其重定向到我的本地(我在 IIS my.uk.ac.ir 上使用虚拟主机)。 问题是当它 return 时它没有 return 属性。 我的项目在 .net4.5.2 上并使用 tls12
这是我修改的原始项目。 https://github.com/casinthecloud/dotnet-cas-client-demo
这是 link 修改后的项目:https://github.com/HamidRezaAshkiyan/dotnet-cas-client-demo 我的修改在开发分支上。
这是我的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 解决了它,我在上面的答案中看到了类似的问题。
经过大量谷歌搜索后,我发现这个库不支持 cas 协议 3,我找到了另一个适用于 .net core 3 并默认支持 3 的库: https://github.com/akunzai/GSS.Authentication.CAS
它帮助我获得属性。
Apereo 库正在努力支持协议 3。