ProcessUserAuthorization返回null,ExchangeUserCredentialsForToken返回400

时间:2019-09-28 12:39:13

标签: c# .net api http-status-code-400 visma-net

我正在尝试向Visma Api进行身份验证。 (visma.net)使用OAuth2。 因此,我创建了一个使用UserAgentClient进行身份验证的authhelper。常量中的所有值都是正确的。当然,这应该从文件中读取,但是为了简单起见,我只是尝试了一下。

所以我面临的问题是,在Authenticate函数中,ProcessUserAuthorization(我已经尝试过这两个方法,因此都注释了),返回null,而exchangeforken则返回400错误。

鉴于1.我提供的所有信息正确无误,所以我在做什么。2. api可以正常工作,并且身份验证也应该起作用,因为它在Postman中可以正确身份验证。那使我相信我在代码中做错了。

public static class AuthHelper
{
    public static UserAgentClient CreateClient()
    {
        var authorizationEndpoint = new Uri($"{Constants.IDENTITY_SERVER_ADDRESS}/connect/authorize");
        var tokenEndpoint = new Uri($@"{Constants.IDENTITY_SERVER_ADDRESS}/connect/token");
        var serverDesc = GetAuthorizationServerDescription();
        var client = new UserAgentClient(serverDesc, Constants.CLIENT_ID, Constants.CLIENT_SECRET);
        return client;
    }

    private static AuthorizationServerDescription GetAuthorizationServerDescription()
    {
        var authorizationEndpoint = $@"{Constants.IDENTITY_SERVER_ADDRESS}/connect/authorize";
        var tokenEndpoint = $@"{Constants.IDENTITY_SERVER_ADDRESS}/connect/token";

        var serverDesc = new AuthorizationServerDescription
        {
            ProtocolVersion = ProtocolVersion.V20,
            AuthorizationEndpoint = new Uri(authorizationEndpoint),
            TokenEndpoint = new Uri(tokenEndpoint)
        };

        return serverDesc;
    }
}

private static void Authenticate()
{
    var scopes = new List<string> { "offline_access", "ea:api", "ea:sales" };
    var client = AuthHelper.CreateClient();

    var c = client.ProcessUserAuthorization(new Uri(Constants.REDIRECT_URI), new AuthorizationState(scopes));

    //var token = client.ExchangeUserCredentialForToken(Constants.USERNAME, Constants.PASSWORD, scopes);
    Console.WriteLine(c.Callback.AbsolutePath);
}

请注意,使用ExchangeUserCredentialForToken返回400,而ProcessUserAuthorization返回null。最终我只想要一个令牌,所以我想使用ExchangeUserCredentialForToken

0 个答案:

没有答案