一旦服务器重定向到我们的网页,请获取CAS密钥
本文关键字:获取 CAS 密钥 网页 服务器 重定向 我们 | 更新日期: 2023-09-27 17:57:38
问题是,一旦我登录到存在数据的外部服务器并使用get/POST请求获取数据,但unity正在为游戏的Webplayer版本抛出跨域策略错误,因为我们的游戏托管在不同的域上,并且我们使POST/get请求从外部服务器获取数据。因此,关键是一旦在外部服务器中完成登录,它会将我重定向到我的域页面,并在最后附上一张CAS票证,如下所示:
http://mydomain.com/webbuild.html?ticket=ST-260-NigEPjMAlD7GoeRsxAIO-xxx-cas
该服务器页面中有以下代码:
<div class="content">
<div class="content-center float-left">
<form id="fm1" action="/cas/login;jsessionid=qjuydeza6epg18b644x1e25ly?service=https%3A%2F%2Fsb.xxx.com%2Fweb%2Fplayer_login%3FapiKey%3D285dcdb0-9e8b-4e17-8a2f-f72551a16f3d%26successUrl%3Dhttp%253A%252F%252Fmydomain.com%252Fwebbuild.html" method="post">
<div id="error-message" class="error display-none">
</div>
<h2>LOG IN</h2>
<div class="row">
<input id="username" name="username" class="required display-block" tabindex="1" placeholder="Email address" type="email" accesskey="u" value="" size="25" autocomplete="false"/>
</div>
<div class="row">
<input id="password" name="password" class="required display-block" tabindex="2" placeholder="Password" accesskey="p" type="password" value="" size="25" autocomplete="off"/>
</div>
<div class="row buttons">
<input type="hidden" name="lt" value="LT-1182-FT6sa9JS2ASrsjEpiEqV0eJ3Pr3fBI" />
<input type="hidden" name="execution" value="e1s1" />
<input type="hidden" name="_eventId" value="submit" />
<input class="submit-button" name="submit" accesskey="l" value="Log In" tabindex="4" type="submit" />
</div>
<div class="row links">
<a id="forgot_password_link" href="https://sb.xxx.com/web/users/forgotten_passwords/new" class="portal-link display-block">Forgot your password?</a>
<a id="create_account_link" href="https://sb.xxx.com/web/users/new" class="portal-link display-block">Join bspot!</a>
</div>
</form>
</div>
<div class="content-right content-border float-left"> </div>
</div>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js"></script>
<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js"></script>
<script type="text/javascript" src="/cas/js/cas.js"></script>
<script type="text/javascript" src="/cas/js/ga.js"></script>
<script type="text/javascript" src="/cas/js/urchin.js"></script>
<script type="text/javascript" src="/cas/js/call_urchin.js"></script>
<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"applicationID":"2220950","applicationTime":36,"beacon":"beacon-2.newrelic.com","queueTime":0,"licenseKey":"099091ce43","transactionName":"blBbNkoFXBIDVRJdXFcaczFoS2UkIBsvenUWQ1AHT0tYEhIZAlFVWEBVFmdLRwhNVQdHf1ZSUAxuDVcWTFwVRA==","agent":"js-agent.newrelic.com'/nr-378.min.js","errorBeacon":"jserror.newrelic.com"}</script></body>
</html>
有没有办法从他们的服务器上读取CAS密钥?要么通过webplayer版本的构建(在他们的服务器中需要crossdomain.xml,我无法访问),要么通过本地应用程序(比如pc、android、ios)构建。如果有一种方法,当CAS票证重定向时,我应该使用哪个库来读取它。
我必须在我的域名页面上有一个html代码,它可以读取CAS票证吗?
谢谢。
我很难准确理解你在做什么,但下面是与CAS交互的典型方式:
- 用户点击应用程序网页
- 应用程序将用户重定向到CAS
- CAS使用标准cookie和会话来确定用户是否已经登录
- 如果用户未登录,CAS将显示一个登录表单,供用户提供登录凭据。如果用户已经登录,则CAS跳到步骤#7
- 然后,CAS与身份验证数据交互,以验证所提供的凭据是否有效
- 如果是,则CAS登录用户
- 则CAS将重定向回应用程序,并提供票证
- 应用程序直接调用CAS以验证提供的票证
- 如果票据有效,则CAS返回用户信息作为对请求的响应
- 然后,应用程序为用户创建一个经过身份验证的会话,可能会根据CAS提供的信息查找用户信息,并将其重定向到适当的位置
因此,您的应用程序服务器应该能够转身向CAS服务器发出请求,使用票证获取用户信息。
由于这一切都是通过重定向或服务器发起的请求发生的,不同的域不应该成为问题。
希望这能有所帮助。