웹 서비스의 클라이언트 별 확인 번호를 생성합니다
-
05-09-2019 - |
문제
바깥쪽으로 향하는 웹 서비스가 있지만 유효한 클라이언트로부터 요청이 제공되도록 확인 시스템을 생성해야합니다.
원래 웹 서비스가 다음과 같이 정의되어 있다고 가정 해 봅시다.
[OperationContract]
public void Service.RequestMethod (string clientId, int reqNumber,
string reqText)
{
// do stuff with the parameters
}
요청이 실제로 clientId
매개 변수.
내 현재 계획은 메소드 서명에 다른 매개 변수를 추가하여 종류의 체크섬을 제공하는 것입니다.
[OperationContract]
public void Service.RequestMethod (string clientId, int reqNumber,
string reqText, string reqChecksum)
{
// verify reqChecksum, then
// do stuff with the parameters
}
승인 된 클라이언트가 체크섬을 계산했는지 확인하는 기능이 필요합니다. 그것은 계산해야합니다 reqNumber
그리고 reqText
클라이언트와 서버에서 알려진 클라이언트 별 "비밀번호"뿐만 아니라 매개 변수.
사실상 : 그것은 다음과 같아야합니다.
private bool VerifyChecksum(int reqNumber, string reqText,
string clientPassword, string reqChecksum)
{
// hash reqNumber, reqTxt, and clientPassword
// ensure it matches reqChecksum
}
이 해싱 기능이나 모델 전체에 대한 제안이 있습니까?
메시지 별, 클라이언트 별 및 추측이 어려워야합니다 (높은 엔트로피).
해결책
당신은 아마 어떤 종류의 것을 찾고있을 것입니다 맥. 해시를위한 MD5와 같은 것. MD5의 전체 아이디어는 "일부"데이터에 적용하고 값을 얻는 것입니다. "일부 데이터"부분이 모든 사람에게 알려지지 않는 한 그 가치를 재현하는 것은 거의 불가능합니다.
다른 팁
표준 웹 서비스 인증 방법 중 하나를 사용하지 않는 이유는 무엇입니까? 잘 알려져 있고 널리 구현 된 솔루션을 선택할 수 있으며 매개 변수와 인증 정보를 모두 전달하여 인터페이스를 모으지 않을 것입니다.
인증 된 클라이언트가 둘 이상의 'clientID'를 통과 할 수 있다면 여전히 승인 문제가있을 수 있지만 다시 알려진 솔루션이 많이 있으며 전적으로 귀하의 편이 있습니다. 예를 들어, 허용 가능한 모든 (userId, clientId, methodName) 조합을 나열하고 다른 모든 것을 금지하는 ACL 구현까지 갈 수 있습니다.