1

我已经在 Azure 中设置了我的 ACS。我创建了一个 MVC 4 WebAPI 项目。我在 Visual Studio 2012 中添加了“身份和访问权限”。

这正在运行。但是当我启动应用程序时,我得到以下信息: ID4014:SecurityTokenHandler 未注册以读取安全令牌('BinarySecurityToken','http://docs.oasis-open.org/wss/2004/01/oasis-200401- wss-wssecurity-secext-1.0.xsd')。

问题是我告诉 ACS 使用 SWT 而不是 SAML 2.0。根据我在有关保护 restfull wep api 的指南中看到的内容,swt 是要走的路。

如果我更改为 SAML 2.0,它都可以在 Web 界面中运行。但是,当我为 Windows Store(Metro)或其他客户端编写客户端以从项目的 WebAPI 部分获取数据时,这将如何解决?

任何建议继续。我应该使用 SWT,它是如何工作的。我应该使用 SAML 2.0,然后我应该在 Windows 应用商店客户端中处理authenticaitno 吗?

4

1 回答 1

0

我找到了一个启用 swt 令牌的 nuget 打包 wif.swt。

 <microsoft.identityModel>
    <service saveBootstrapTokens="true">
      <audienceUris>
        <!--<add value="http://traffictheory.cloudapp.net/" />-->
        <add value="http://77.55.160.102:48451/" />
      </audienceUris>
      <issuerNameRegistry type="Microsoft.IdentityModel.Swt.SwtIssuerNameRegistry, Wif.Swt">
        <trustedIssuers>
          <add thumbprint="033F53598E4ED92E51C07238E36BBFF4E67ABAD2" name="https://traffictheory.accesscontrol.windows.net/" />
        </trustedIssuers>
      </issuerNameRegistry>
      <claimsAuthenticationManager type="S_Innovations.TrafficTheory.Web.Security.TrafficTheoryClaimsAuthenticationManager, S-Innovations.TrafficTheory.Web.Security" />
      <federatedAuthentication>
        <cookieHandler requireSsl="false" />
        <wsFederation passiveRedirectEnabled="true" issuer="https://traffictheory.accesscontrol.windows.net/v2/wsfederation" realm="http://77.55.160.102:48451/" reply="http://77.55.160.102:48451/" requireHttps="false" />
      </federatedAuthentication>
      <certificateValidation certificateValidationMode="None" />
      <securityTokenHandlers>
            <add type="Microsoft.IdentityModel.Swt.SwtSecurityTokenHandler, Wif.Swt" />
        </securityTokenHandlers>
        <issuerTokenResolver type="Microsoft.IdentityModel.Swt.SwtIssuerTokenResolver, Wif.Swt" />
      <!--<serviceCertificate>
        <certificateReference findValue="‎417DE8DCA4326B845C189BDE0990673433435524" storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" />
      </serviceCertificate>-->    
    </service>
  </microsoft.identityModel>
于 2012-09-27T22:25:08.583 回答