当我尝试将此JWT(由Azure移动服务发布)作为HTTP标头/授权/承载令牌传递时:
Header:
{
"alg": "HS256",
"typ": "JWT",
"kid": "0"
}
Claims:
{
"ver": 2,
"aud": "Facebook",
"iss": "urn:microsoft:windows-azure:zumo",
"urn:microsoft:credentials": "pYK8b5...",
"exp": 1436730730,
"uid": "Facebook:10000xxxxxxxxxx"
}
Run Code Online (Sandbox Code Playgroud)
进入我的ASP.NET WEB API配置:
const string issuer = "urn:microsoft:windows-azure:zumo";
byte[] mobileServicesSecret = TextEncodings.Base64Url.Decode(ConfigurationManager.AppSettings["as:SecretKey"]);
app.UseJwtBearerAuthentication(
new JwtBearerAuthenticationOptions
{
AuthenticationMode = AuthenticationMode.Active,
AllowedAudiences = new[] { "Facebook" },
IssuerSecurityTokenProviders = new IIssuerSecurityTokenProvider[]
{
new SymmetricKeyIssuerSecurityTokenProvider(issuer, mobileServicesSecret)
}
});
Run Code Online (Sandbox Code Playgroud)
我明白了:
System.IdentityModel.Tokens.Jwt.dll中出现'System.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException'类型的第一次机会异常
我怀疑这是因为"孩子"财产的存在?
编辑:使用这个https://github.com/Magenic/JWTvalidator/tree/master/JwtValidator/JwtValidator ,可以验证JWT,所以它没有错.但我真的想用OWIN/Katana.
我编写了一个触发器,一旦执行了INSERT行,它就会发送电子邮件。
ALTER TRIGGER TR_SendMailOnDataRequest
ON DataRequest
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@DR_Id INT,
@DR_FullName VARCHAR(200),
@DR_Email VARCHAR(200),
@DR_Phone VARCHAR(20),
@UT_Name VARCHAR(50),
@DR_UserTypeOther VARCHAR(50) = NULL,
@D_Name VARCHAR(200),
@DR_RequestDate DATETIME,
@UF_LinkedFiles VARCHAR(MAX),
@DRN_Names VARCHAR(200),
@DR_Description VARCHAR(1200),
@DR_CreatedOn DATETIME,
@analystMailList VARCHAR(MAX),
@tableHtml NVARCHAR(MAX),
@downloadLink VARCHAR(MAX) = N'NONE'
SELECT @DR_Id = MAX(DR_Id) FROM dbo.DataRequest
SELECT
@DR_FullName = DR_FullName,
@DR_Email = DR_Email,
@DR_Phone = DR_Phone,
@UT_Name = UT_Name,
@DR_UserTypeOther = DR_UserTypeOther,
@D_Name = D_Name,
@DR_RequestDate = DR_RequestDate,
@UF_LinkedFiles = …Run Code Online (Sandbox Code Playgroud)