相关疑难解决方法(0)

如何在C#中实现Base64 URL安全编码?

我想在C#中实现Base64 URL安全编码.在Java中,我们有一个公共Codec库,它为我提供了一个URL安全编码字符串.如何使用C#实现相同的目标?

byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes("StringToEncode");
string returnValue = System.Convert.ToBase64String(toEncodeAsBytes);
Run Code Online (Sandbox Code Playgroud)

上面的代码将它转换为Base64,但它填充==.有没有办法实现URL安全编码?

c# base64 encoding

88
推荐指数
5
解决办法
7万
查看次数

如何解码JWT Token?

我不明白这个库是如何工作的.请问你能帮帮我吗 ?

这是我的简单代码:

public void TestJwtSecurityTokenHandler()
    {
        var stream =
            "eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJJU1MiLCJzY29wZSI6Imh0dHBzOi8vbGFyaW0uZG5zY2UuZG91YW5lL2NpZWxzZXJ2aWNlL3dzIiwiYXVkIjoiaHR0cHM6Ly9kb3VhbmUuZmluYW5jZXMuZ291di5mci9vYXV0aDIvdjEiLCJpYXQiOiJcL0RhdGUoMTQ2ODM2MjU5Mzc4NClcLyJ9";
        var handler = new JwtSecurityTokenHandler();

        var jsonToken = handler.ReadToken(stream);
    }
Run Code Online (Sandbox Code Playgroud)

这是错误:

字符串需要采用紧凑的JSON格式,格式如下:Base64UrlEncodedHeader.Base64UrlEndcodedPayload.OPTIONAL,Base64UrlEncodedSignature'.

如果你在jwt.io网站上复制流,它工作正常:)

.net c# jwt

72
推荐指数
6
解决办法
8万
查看次数

验证Google OpenID Connect JWT ID令牌

我正在尝试升级我的MVC网站以使用新的OpenID Connect标准.OWIN中间件看起来非常强大,但不幸的是只支持"form_post"响应类型.这意味着Google不兼容,因为它会在"#"后面的URL中返回所有令牌,因此它们永远不会到达服务器并且永远不会触发中间件.

我试图在中间件中自己触发响应处理程序,但这似乎根本不起作用,所以我有一个简单的javascript文件解析返回的声明并将它们发送到控制器动作进行处理.

问题是,即使我在服务器端获取它们,我也无法正确解析它们.我得到的错误看起来像这样:

IDX10500: Signature validation failed. Unable to resolve     
SecurityKeyIdentifier: 'SecurityKeyIdentifier
(
   IsReadOnly = False,
   Count = 1,
   Clause[0] = System.IdentityModel.Tokens.NamedKeySecurityKeyIdentifierClause
),
token: '{
    "alg":"RS256",
    "kid":"073a3204ec09d050f5fd26460d7ddaf4b4ec7561"
}.
{
    "iss":"accounts.google.com",
    "sub":"100330116539301590598",
    "azp":"1061880999501-b47blhmmeprkvhcsnqmhfc7t20gvlgfl.apps.googleusercontent.com",
    "nonce":"7c8c3656118e4273a397c7d58e108eb1",
    "email_verified":true,
    "aud":"1061880999501-b47blhmmeprkvhcsnqmhfc7t20gvlgfl.apps.googleusercontent.com",
    "iat":1429556543,"exp\":1429560143
    }'."
}
Run Code Online (Sandbox Code Playgroud)

我的令牌验证码遵循开发IdentityServer的优秀人员概述的示例

    private async Task<IEnumerable<Claim>> ValidateIdentityTokenAsync(string idToken, string state)
    {
        // New Stuff
        var token = new JwtSecurityToken(idToken);
        var jwtHandler = new JwtSecurityTokenHandler();
        byte[][] certBytes = getGoogleCertBytes();

        for (int i = 0; i < certBytes.Length; i++)
        {
            var certificate = new X509Certificate2(certBytes[i]); …
Run Code Online (Sandbox Code Playgroud)

.net c# jwt owin openid-connect

13
推荐指数
2
解决办法
8648
查看次数

解析JWT以获得C#中的声明

我们的高级开发人员编写了以下代码,作为示例:

public class TokenParser 
{
    private Token token;

    public Token Parse(HttpRequestMessage r)
    {
        IOwinContext context = r.GetOwinContext();
        token = new Token();
        ParseData(context);
        return token;
    }

    private void ParseData(IOwinContext context)
    {
        token.Name= context.Authentication.User.Claims.Single(x => x.Type == ClaimTypes.Name).Value;
    }
}
Run Code Online (Sandbox Code Playgroud)

(还有一个"Token.cs"类,它只有一个name属性作为字符串.)

我们解码的 JWT有效载荷如下所示:

{
  "iss": "https://someissuer.com/",
  "sub": "I want this string, atm I get it manually",
  "aud": "11543fdsasf23432",
  "exp": 33244323433,
  "iat": 23443223434
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,当我尝试通过类型"sub"获取声明时,没有任何内容出现(并且它不在列表中).但"sub"似乎是一个非常普遍的主张.

我在这做错了什么?我可以获得主题("子")声明吗?

编辑:对于那些推荐system.IdentityModel - 尝试使用它时出现此错误:

identityModelError

c# jwt owin

9
推荐指数
1
解决办法
2万
查看次数

SPA - Firebase和.Net WebApi 2身份验证

我有一个用AngularJs编写的单页面应用程序(此时框架是无关紧要的)应用程序托管在IIS中,它由index.html和一堆客户端资产组成.

在后端我有WebApi 2,也作为单独的应用程序在IIS中托管.

对于客户端身份验证,我使用Firebase(简单登录),启用了几个社交网络,如Facebook,Twitter或Google.

到现在为止还挺好.我喜欢用firebase启用twitter身份验证是多么容易.

在使用社交网络登录时,我从firebase返回,firebaseAuthToken和提供者accessstoken.

现在我想使用firebaseAuthToken或提供者访问令牌来验证我的WebApi.

问题是:在给定条件下使用WebApi进行身份验证的最佳方法什么?

因为我在服务器上安装了复杂的业务逻辑,所以没有选项只使用firebase来存储我的数据并摆脱web api.

到目前为止,我有一个愚蠢的想法是将社交提供者访问令牌传递给服务器,针对提供者验证令牌,然后使用Owin -Katana发出安全令牌.

由于缺乏文档,复杂性以及与单页应用程序的错误集成,我没有使用katana构建社交提供程序支持.我发现SPA的视觉工作室模板太具体了.但那是我:)

javascript c# asp.net angularjs firebase

6
推荐指数
1
解决办法
4187
查看次数

标签 统计

c# ×5

jwt ×3

.net ×2

owin ×2

angularjs ×1

asp.net ×1

base64 ×1

encoding ×1

firebase ×1

javascript ×1

openid-connect ×1