在WebApi服务中validationAzure移动服务令牌

我正在尝试在使用WebApi服务的跨平台移动应用程序上实现身份validation和身份validation。

我的计划是将身份validation导出到联合云服务,例如新的Azure移动服务。 客户端移动应用程序将使用移动服务身份validation流程,获取令牌,而不是将请求的头部发送到WebApi,然后WebApi将对其进行validation并从中提取UserId。

假设我已经使用DelegatingHandler拦截器配置了WebApivalidationJWT令牌,是否可以validationAzure移动服务发布的令牌?

SymmetricKey,Issuer和Audience的正确值是什么?

我正朝着正确的方向前进吗?

http://www.thejoyofcode.com/Generating_your_own_ZUMO_auth_token_Day_8_.aspx上的post显示了如何生成 Azure移动服务令牌,但其中包含validation它所需的信息。 基本上,您需要用来validation它的密钥是来自服务的主密钥 (不要将该密钥分发给任何客户端,但如果它在您的服务中安全编码,那应该没问题)。 观众取决于创建令牌的提供者(例如,对于FB,它是字符串"Facebook" )。 发行者设置为urn:microsoft:windows-azure:zumo

您需要在WebAPI项目中执行的操作是实现一个自定义消息处理程序来拦截令牌并validation它是否使用来自AMS的相同主密钥进行签名。 GitHub上有一个项目,展示了如何执行此操作:

JWTvalidation员

这基本上是另一个GitHub项目的衍生物,它在这里有原始的ASP.NET示例:

AuthenticationTokenSample

调用ValidateSignature()方法时会发生主要validation,该方法接受JWT Claim段的UTF-8表示的字节,并使用Azure Mobile Services的共享密钥计算它们上的HMAC SHA-256 MAC。 如果JWT加密段和先前计算的值,则确认该密钥用于在JWT上生成HMAC并且JWT索赔段的内容未被篡改。

我发现的一个主要问题是删除附加的"JWTSig"字符串, "JWTSig"不被附加到ValidateSignature()方法中的主密钥。 看来签名的令牌不再将该字符串附加到AMS的主密钥。 在删除该段之前,我遇到了各种麻烦。