@abc.abstractmethod<EOL><INDENT>def authenticate(self, input_):<DEDENT>
return<EOL>
Validates and returns the authentication credential from the given data.

        :param input: the authentication input to be validated
        :type input: ``osid.authentication.process.AuthenticationInput``
        :return: the resulting authentication
        :rtype: ``osid.authentication.process.Authentication``
        :raise: ``NullArgument`` -- ``input`` is ``null``
        :raise: ``OperationFailed`` -- unable to complete request
        :raise: ``PermissionDenied`` -- authorization failure
        :raise: ``Unsupported`` -- ``input`` is not of this service

        *compliance: mandatory -- This method is must be implemented.*