gpt4 book ai didi

azure - 在多个主机上托管 ACS 应用程序

转载 作者:行者123 更新时间:2023-12-02 07:42:06 25 4
gpt4 key购买 nike

我正在使用 Windows Azure ACS 来构建单点登录应用程序。我正在使用 javascript/HTML 来收集用户信息。我面临的问题是我需要在不同的主机上托管我的应用程序,例如:

  • 本地主机
  • 本地主机:81
  • *.cloudapp.net
  • 另一个内部主机,如 http://helloacs/

我尝试为每个主机创建多个依赖应用程序,但它仅适用于 localhost/localhost:81。我的 *.cloudapp.net 依赖方应用程序是这样配置的:

Name: *.cloudapp.net
Realm: *.cloudapp.net
Return URL: http://*.cloudapp.net/

我的登录页面正在构建如下回复网址:

http://*.cloudapp.net/Login.aspx

这是我生成的对 IdentityProviders.js 的调用:

https://*.accesscontrol.windows.net/v2/metadata/IdentityProviders.js?protocol=wsfederation&realm=*.cloudapp.net&reply_to=http://*.cloudapp.net/Login.aspx&version=1.0&callback=ShowSigninPage

导航到身份提供商并登录后,我得到:

ACS30000: There was an error processing an OpenID sign-in response. 

如果这不是解决方案,如何让我的应用程序在多个主机上运行?

最佳答案

您为每个主机创建了多个依赖应用程序是正确的。但是,当您使用不带自定义代码的默认被动联合时,领域会硬编码在您的 web.config 文件中,如下所示:

  <microsoft.identityModel>
<service>
.....
<audienceUris>
<add value="http://localhost:4500/"/>
</audienceUris>
<federatedAuthentication>
<wsFederation passiveRedirectEnabled="true"
issuer="https://staykov.accesscontrol.windows.net/v2/wsfederation"
realm="http://localhost:4500/"
requireHttps="false" />
<cookieHandler requireSsl="false" />
</federatedAuthentication>

如果您希望同一应用程序在多个主机名下同时运行,则必须添加一些编码。如果您需要在不同域下测试相同的应用程序 - 只需将 web.config 中的领域更改为相应的依赖方应用程序地址即可。您必须更改“audienceUris”部分中的地址以及“wsFederation”元素中的“realm”属性。如果 realm 属性与您的应用程序运行的域不同,身份验证将失败。

查看thisthat问题 - 都指向相同的文档和示例如何更改领域,以防您想在多个域下为您的应用程序提供服务。我会寻找更多样本。

并在此处查看如何更改领域/返回地址/

关于azure - 在多个主机上托管 ACS 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8943652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com