使用IdentityServer v3的JWT承载令牌流

时间:2015-01-16 16:25:15

标签: .net oauth-2.0 thinktecture

我希望为我的网络API实施OAuth2授权,并使用Google的文档作为模型。我试图实施的具体流程是"服务帐户" flow:here(据我所知,它也被称为JWT Bearer Token流程?)。

如何在我的MVC应用程序中使用Thinktecture实现此功能? (或者有更好的选择吗?)

1 个答案:

答案 0 :(得分:1)

您应该能够使用与作为v2(https://github.com/thinktecture/Thinktecture.IdentityServer.v2/blob/master/samples/AdfsIntegrationSampleClient/AdfsIntegrationSampleClient/Program.cs#L123)一部分提供的示例中相同的代码,因此:

        var client = new HttpClient { BaseAddress = new Uri(idsrvEndpoint) };

        var values = new Dictionary<string, string>
        {
            { OAuth2Constants.GrantType, "urn:ietf:params:oauth:grant-type:jwt-bearer" },
            { OAuth2Constants.Assertion, jwt },
            { OAuth2Constants.Scope, realm }
        };

        var form = new FormUrlEncodedContent(values);

        var response = client.PostAsync("", form).Result;
        response.EnsureSuccessStatusCode();

        var tokenResponse = response.Content.ReadAsStringAsync().Result;
        var json = JObject.Parse(tokenResponse);
        return json["access_token"].ToString();