vamos la
para fazer login e senha vc vai sim precisar de um banco de dados, porem cuidado ao armazenar senhas. pense no dano que seria se a base de dados vazar. uma solução é vc armazenar o hash + salt no banco de dados. Veja ao final dessa resposta.
para acessar um webservice, digamos da Receita Federal, vc precisa saber que tipo de webservice isso é ( Rest? SOAP? algo mais obscuro e sinistro? ) e se é disponibilizado um client que ja faz tudo pra vc (alguns sites podem fornecer uma versão java ou php). se não, vc precisa ler a documentação e montar os requests de acordo.
SOAP em geral existe um arquivo descritor ( o WSDL ) que vc pode usar para gerar codigo automagico.
qualquer webservice que vc vai consultar vai ter algum tipo de autorização. vc provavelmente vai ter que ler como é feita a autenticação ( se é OAuth, Basic Authentication, etc ) e ler como vc cria uma autorização para vc. Provavelmente tera restrições do tipo “vc pode fazer x requests por dia”.
sendo assim, veja se vc pode cachear os resultados. evita gastar request a toa. e veja como vc pode limitar que usuarios gastem toda a sua quota ( vc pode criar um sistema de tokens, onde por dia o cara pode fazer X consultas - e ai seja criativo).
por fim, se o seu serviço for pago, talvez vc tenha que olhar os termos de uso. talvez um acesso gratuito não possa ser cobrado ( e se te pegarem babau )
entenda: vc vai consumir um webservice. isso significa que o seu sistema vai falar com outro sistema, esperar a resposta, pode ser q demore, pode ser q esteja fora do ar, etc.
sobre armazenar senhas:
grosso modo, se a senha é XUXU vc não armazena XUXU. vc calcula um hash ( MD5, SHA, etc ) do XUXU ( exemplo 6f71556e3d1a2829d3f371ffcc7e8055 ). pra saber se o cara digitou certo vc pega a senha q ele digitou, calcula o hash e compara com o que vc salvou no banco.
o salt é um “plus a mais”. vc gera uma string grande aleatoria ( tipo ITAQUAQUECETUBA ) e ai vc salva no banco o hash ( XUXU + ITAQUAQUECETUBA ) e ITAQUAQUECETUBA no banco, em dois campos distintos.
no que isso ajuda? senhas comuns geram hashs comuns. é trivial de encontrar senhas faceis assim.