自定义JwtSecurityTokenHandler未被调用

时间:2013-10-25 20:35:05

标签: model-view-controller office365 jwt azure-active-directory

我有一个.NET MVC应用程序,它使用Azure Active Directory进行身份验证。

我正在尝试添加自定义JWTSecurityTokenHandler来验证对应用程序执行一些基本GET请求的控制台应用程序。但是,每个请求都会被重定向到Azure AD登录页面,而不是传递给JWT处理程序(我的断点和处理程序中的日志语句没有被命中)。有什么想法吗?

的Web.config:

  <system.identityModel>
    <identityConfiguration>
      <audienceUris>
        <add value="https://localhost:44300/" />
      </audienceUris>
      <securityTokenHandlers>
        <add type="QS.Admin.Infrastructure.MyJwtHandler, QS.Admin" />
        <securityTokenHandlerConfiguration>
          <certificateValidation certificateValidationMode="None" />
        </securityTokenHandlerConfiguration>
      </securityTokenHandlers>
      <issuerNameRegistry type="System.IdentityModel.Tokens.ValidatingIssuerNameRegistry, System.IdentityModel.Tokens.ValidatingIssuerNameRegistry">
        <authority name="https://[myaccessdomain].accesscontrol.windows.net/">
          <keys>
            <add thumbprint="[thumbprint]" />
          </keys>
          <validIssuers>
            <add name="https://[myaccessdomain].accesscontrol.windows.net/" />
          </validIssuers>
        </authority>
      </issuerNameRegistry>
      <!--certificationValidationMode set to "None" by the the Identity and Access Tool for Visual Studio. For development purposes.-->
      <certificateValidation certificateValidationMode="None" />
    </identityConfiguration>
  </system.identityModel>
  <system.identityModel.services>
    <federationConfiguration>
      <cookieHandler requireSsl="false" />
      <wsFederation passiveRedirectEnabled="true" issuer="https://[myaccessdomain].accesscontrol.windows.net/v2/wsfederation" realm="https://localhost:44300/" requireHttps="false" />
    </federationConfiguration>
  </system.identityModel.services>

2 个答案:

答案 0 :(得分:1)

除上述建议外, jwtsecuritytokenhandlers的职责是验证jwt并在上游提供索赔。我没有在配置中的任何地方看到会话管理,如果缺少,每次调用主机都需要从ACS获取新令牌。

答案 1 :(得分:0)

web.config中的设置看起来正确。

要检查的事情:

  1. 确保ACS配置为您的领域发布JWT令牌。

  2. 如果您从MS插入JwtSecurityTokenHandler - 是否会受到攻击?这有助于将问题与自定义处理程序隔离,而不是与ACS或web.config中的设置隔离。