maneira segura de autenticar administrador no site ASP.NET usando OpenID com DotNetOpenID

StackOverflow https://stackoverflow.com/questions/56944

  •  09-06-2019
  •  | 
  •  

Pergunta

Incentivado pelo SO, estou tentando escrever um site ASP.NET que use OpenID para autenticação de usuário.É um site WinForms normal (não MVC.NET), usando o DotNetOpenID biblioteca para autenticação.

É seguro permitir/negar funções administrativas no site simplesmente comparando o "ClaimedID" da sessão atual (conforme retornado no evento OpenIdLogin_LoggedIn, como membro DotNetOpenId.RelyingParty,OpenIdEventArgs.Response.ClaimedIdentifier) ​​com o OpenID de um administrador conhecido (ou seja,meu)?

Em caso afirmativo, é seguro que este ID fique visível (por exemploem código-fonte aberto) ou deveria estar "oculto" em um arquivo de configuração ou em uma linha do banco de dados?(Eu sei que é melhor projetar para torná-lo configurável, minha pergunta é apenas sobre segurança.)

Foi útil?

Solução

Jarrett faz alguns bons comentários sobre o uso de tabelas de banco de dados.

Só para responder a outra de suas perguntas, não, geralmente não é uma questão de confidencialidade colocar seu OpenID em seu código.Se a configuração de funções parece um exagero para o seu site, uma simples verificação de igualdade em relação ao seu ClaimedIdentifier é simplesmente perfeita.

Outras dicas

Minha solução é seguir a mesma ideia da tabela Roles.Depois de autenticar o usuário, procure as funções dele.Se o usuário tiver a função "Administrador" na tabela UserRoles, ele poderá fazer tudo o que o Administrador puder fazer.

Não transmito IDs abertos em meu aplicativo.Eles estão armazenados na tabela.Em cada resultado de ação, estou acessando a tabela Usuários, pois também modifiquei a minha para armazenar diversas informações de estado do usuário.Com exceção da página inicial, precisarei de algumas informações do usuário nessa tabela.Estou usando LINQ, então incluo .LoadWith() para carregar o usuário com sua lista de funções quando ele serializa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top