我的用户在线登录SharePoint并进行身份验证。
我有一个定制的Web应用程序,我的客户端调用它。
我想绝对确切地知道哪个用户正在调用我的API.
到目前为止,我的想法是在SharePoint (成功)中的cookie中找到JWT,它声明了登录的人。通过将它发送到我的自定义API中,我可以合理地知道是谁在调用,但我如何信任它呢?
我可以以某种方式验证JWT,即使它不是由我发布的?
还有其他的想法来实现同样的目标吗?(注意,我不想在我的web应用程序中引入Azure认证。我想在一个API调用中识别用户,而不必先重定向)
FYI:这是登录到SharePoint后发布的JWT的头:
{
"typ": "JWT",
"alg": "RS256",
"x5t": "x478xyOplsM1H7NXk7Sx17x1upc",
"kid": "x478xyOplsM1H7NXk7Sx17x1upc"
}发布于 2018-01-10 14:42:54
以下是O365:https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration的公共配置
.NET核心中的这个示例验证了JWT:
string stsDiscoveryEndpoint = "https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration";
ConfigurationManager<OpenIdConnectConfiguration> configManager = new ConfigurationManager<OpenIdConnectConfiguration>(stsDiscoveryEndpoint, new OpenIdConnectConfigurationRetriever());
OpenIdConnectConfiguration config = configManager.GetConfigurationAsync().Result;
TokenValidationParameters validationParameters = new TokenValidationParameters
{
ValidateAudience = false,
ValidateIssuer = false,
ValidateLifetime = false,
IssuerSigningKeys = config.SigningKeys
};
JwtSecurityTokenHandler tokendHandler = new JwtSecurityTokenHandler();
var token = "JWT TOKEN TO VALIDATE HERE";
SecurityToken jwt;
var result = tokendHandler.ValidateToken(token, validationParameters, out jwt);
return jwt as JwtSecurityToken;它需要使用这些语句。
using Microsoft.IdentityModel.Protocols;
using Microsoft.IdentityModel.Protocols.OpenIdConnect;
using Microsoft.IdentityModel.Tokens;
using System.IdentityModel.Tokens.Jwt;我用这个例子开始了,但是它在.NET核心中没有发挥作用。https://blogs.msdn.microsoft.com/practice-sharing/2016/03/22/office-365-dev-how-to-validate-the-access-token-issued-by-microsoft-azure-ad/
https://stackoverflow.com/questions/48182806
复制相似问题