IdentityServer 4还是OpenIddict?

时间:2017-03-05 16:48:51

标签: .net jwt identityserver4 openiddict

哪一个最容易设置服务器到服务器的JWT?我已经有一个现有的JWT令牌,我需要设置整个服务器才能通过令牌吗?

我有一个要求用例为另一台服务器上托管的Web API创建客户端,但无法弄清楚如何将.NET Core中的凭据传递给其他服务器,我只需要能够构建一个GET和一个使用C#进入远程服务器API的POST,并构建一些图表来显示GET的结果。

2 个答案:

答案 0 :(得分:0)

如果您已有令牌,那么您不需要IdentityServer4或OpenIddict。 IdentityServer4和OpenIddict会根据请求发出令牌,但您似乎已经在本地发布了这些令牌。

我使用通过HTTPS执行POST的表单将我的令牌从站点A发送到站点B.

const inputs = document.querySelectorAll('input[type=checkbox]');

function disableCheckbox() {
  this.disabled = true;
}

inputs.forEach(input => input.addEventListener('click', disableCheckbox));

您还可以使用JavaScript自动提交表单。

<form action="https://other-server.example.com/Account/" method="post" id="form">
  <input name="token" type="hidden" value="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...">
</form>

答案 1 :(得分:0)

您可以设置Cookie,然后重定向到子域。 这种方法的好处是它可以防止Pinpiont指出的XSRF /会话固定攻击。缺点是两个站点都必须驻留在某个域上。

    [RequireHttps]
    public IActionResult Redirect()
    {
        var token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...";
        const string domain = "subdomain.example.com";

        Response.Cookies.Append("token", token, new CookieOptions {
            Domain = domain,
            Expires = DateTime.Now.AddHours(1),
            HttpOnly = true,
            Path = new PathString("/Account"),
            Secure = true,
        });

        return Redirect($"https://{domain}/Account");
    }