首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在asp.net内核中手动解密asp.net owin令牌?

如何在asp.net内核中手动解密asp.net owin令牌?
EN

Stack Overflow用户
提问于 2019-05-27 18:46:18
回答 2查看 1.3K关注 0票数 0

我有一个现有的应用程序,生成owin身份令牌与机器密钥的方法。相同的令牌用于验证各种应用程序。其中一个应用程序现在位于asp.net核心中。有没有办法在asp.net核心中使用相同的owin生成的身份令牌?

或者我们可以在asp.net核心中手动解码该令牌

EN

回答 2

Stack Overflow用户

发布于 2019-05-28 21:46:11

使用机器密钥时,您不能在ASP.NET和ASP.NET核心之间共享任何内容。能够解密由ASP.NET应用程序设置的ASP.NET核心中的内容的唯一方法是: 1) ASP.NET应用程序利用数据保护提供程序2)数据保护提供程序密钥环被持久保存到所有应用程序(ASP.NET和ASP.NET核心类似)可访问的文件系统或网络位置,并且所有应用程序使用相同的应用程序名称。

docs go into great detail on this

票数 0
EN

Stack Overflow用户

发布于 2019-05-27 19:23:27

您可以使用IDataProtector直接解密授权码流返回的访问令牌。我们实现IDataProtector接口并使用System.Web.Security.MachineKey.Unprotect method。使helper方法解密OWIN票证

代码语言:javascript
运行
复制
private class MachineKeyProtector : IDataProtector
{
    private readonly string[] _purpose =
    {
        typeof(OAuthAuthorizationServerMiddleware).Namespace,
        "Access_Token",
        "v1"
    };

    public byte[] Protect(byte[] userData)
    {
        //throw new NotImplementedException();
    }

    public byte[] Unprotect(byte[] protectedData)
    {
        return System.Web.Security.MachineKey.Unprotect(protectedData, _purpose);
    }
}

获取ClaimsIdentity和属性字典。我们只需创建一个实例并传入令牌即可获得解密的票证

代码语言:javascript
运行
复制
var secureDataFormat = new TicketDataFormat(new MachineKeyProtector());
AuthenticationTicket ticket = secureDataFormat.Unprotect(accessToken);

上述AuthenticationTicket本身包含ClaimsIdentity和属性字典。参考IDataProtector Interface

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56324559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档