@classmethod
def from_app_role(cls, url, path, role_id, secret_id):
    """Constructor: use AppRole authentication to read secrets from a Vault path

        See https://www.vaultproject.io/docs/auth/approle.html

        Args:
            url: Vault url
            path: Vault path where secrets are stored
            role_id: Vault RoleID
            secret_id: Vault SecretID
        """
    token = cls._fetch_app_role_token(url, role_id, secret_id)
    source_dict = cls._fetch_secrets(url, path, token)
    return cls(source_dict, url, path, token)
