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

标签 azure acs

我正在使用 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/

相关文章:

azure - 如何检测 Windows Azure 中的恶意事件 - 查看 Azure 实例上传入的 HTTP 请求的方法?

mongodb - 将 Azure 认知搜索连接到 MongoDB Cloud Atlas

facebook - ACS 和 facebook 登录 -> display=touch 坏了?

azure - 如何将 Azure Active Directory (WAAD) 连接到 Windows Azure 访问控制服务 (ACS)?

Azure ACS + 自定义 STS,可以用于混合场景吗?

asp.net - Azure ACS 身份验证如何确保安全?

azure - 从 .NET Core 控制台应用连接到 Azure SignalR 服务?

powershell - 上传powershell后获取Azure存储blob url

java - BlobInput 的 Azure 函数绑定(bind)问题,没有任何错误

azure - 获取 Azure 的 ACS 页面进行被动身份验证所需的 wctx 参数