Re: Posting news with Souper

Ian D. Goodyer (goodyer@voicenet.com)
Tue, 20 Aug 1996 12:33:56 -0400

-----BEGIN PGP SIGNED MESSAGE-----

>There have been several requests for help with authentication over the
>past few months.
>
>If anyone wants to adapt an existing REXX posting utility to handle
>authentication, here's a start! Ethan's REXX script is about 11k
>or 400 lines with comments. I will mail (or post) it if requested.
>

Hi everyone. I would love to have a copy of this so I play with it. I
would really like to get the NNTP authentication working with Souper/Yarn

> I'm not really familair with the NNTP
>codes involved beyond the server just saying it requires authorization.

Firstly Sorry to Lou Verdon for not forwarding the attached document to
him earlier like I had promised. I have snipped it heavily so that only
relevant parts are included in this message. Secondly, sorry to anyone
who isn't interested in this for the long message. Thirdly, to anyone who
is interested, see attached document for the current NNTP authentication
protocol.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If you know how to use PGP and support its use please encrypt all mail
to me. The more PGP traffic across the internet the more commonplace it
will be and the harder it will be to ban and to crack the sensitve messages

I have a new key (12 Aug 1996). Please replace 0x335FEA39 with 0x51187691.
Available by finger -l goodyer@voicenet.com
Fingerprint of new key: 13 F8 C2 E6 ED BB 21 93 84 E3 0C A9 19 36 A8 BD

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

INTERNET-DRAFT S. Barber
Expires: September 1, 1996 Academ Consulting Services
April 1996
Common NNTP Extensions
draft-barber-nntp-imp-03.txt

Status of this Document

This document is an Internet-Draft. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its
areas, and its working groups. Note that other groups may also
distribute working documents as Internet-Drafts.

Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other
documents at any time. It is inappropriate to use Internet-
Drafts as reference material or to cite them other than as
``work in progress.''

To learn the current status of any Internet-Draft, please check
the ``1id-abstracts.txt'' listing contained in the Internet-
Drafts Shadow Directories on ftp.is.co.za (Africa),
nic.nordu.net (Europe), munnari.oz.au (Pacific Rim),
ds.internic.net (US East Coast), or ftp.isi.edu (US West Coast).

Abstract

In this document, a number of popular extensions to the NNTP
protocol defined in RFC977 are documented and discussed. While
this document is not intended to serve as a standard of any kind,
it will hopefully serve as a reference document for future
implementors of the NNTP protocol. In the role, this document
would hopefully create the possibility for some level of
interoperability among implementations that make use of extensions.

<BIG SNIP>

3.1 AUTHINFO

AUTHINFO is used to inform a server about the identity of
a user of the server. In all cases, clients must provide
this information when requested by the server. Servers are
not required to accept authentication information that is
volunteered by the client. Clients must accommodate servers that
reject any authentication information volunteered by the client.

There are three forms of AUTHINFO in use. The original version,
an NNTP v2 revision called AUTHINFO SIMPLE and a more recent
version which is called AUTHINFO GENERIC.

3.1.1 Original AUTHINFO

AUTHINFO USER username
AUTHINFO PASS password

The original AUTHINFO is used to identify a specific entity
to the server using a simple username/password combination.

When authorization is required, the server will send a 480
response requesting authorization from the client. The
client must enter AUTHINFO USER followed by the username.
Once sent, the server will cache the username and may send
a 381 response requesting the password associated with that
username. Should the server request a password using the 381
respose, the client must enter AUTHINFO PASS followed by
a password and the server will then check the authentication
database to see if the username/password combination is valid.
If the combination is valid or if no password is required,
the server will return a 281 response. The client should then
retry the original command to which the server responded with
the 480 response. The command should then be processed by
the server normally. If the combination is not valid, the server
will return a 502 response.

Clients must provide authentication when requested by the server.
It is possible that some implementations will accept authentication
information at the beginning of a session, but this was not the
original intent of the specification. If a client attempts to
reauthenticate, the server may return 482 response indicating
that the new authentication data is rejected by the server.
The 482 code will also be returned when the AUTHINFO commands
are not entered in the correct sequence (like two AUTHINFO
USERs in a row, or AUTHINFO PASS preceding AUTHINFO USER).

All information is passed in cleartext.

When authentication succeeds, the server will create an email
address for the client from the user name supplied in the
AUTHINFO USER command and the hostname generated by a reverse
lookup on the IP address of the client. If the reverse lookup
fails, the IP address, represented in dotted-quad format, will
be used. Once authenticated, the server shall generate a Sender:
line using the email address provided by authentication if it
does not match the client-supplied From: line. Additionally,
the server should log the event, including the email address
This will provide a means by which subsequent statistics generation
can associate newsgroup references with unique entities - not
necessarily by name.

3.1.1.1 Responses

281 Authentication accepted
381 More authentication information required
480 Authentication required
482 Authentication rejected
502 No permission

3.1.2 AUTHINFO SIMPLE

AUTHINFO SIMPLE
user password

This version of AUTHINFO was part of the proposed NNTP V2
specification and is implemented in some servers and clients.
It is a refinement of the original AUTHINFO and provides
the same basic functionality, but the sequence of commands
is much simpler.

When authorization is required, the server sends a 450 response
requesting authorization from the client. The client must enter
AUTHINFO SIMPLE. If the server will accept this form of
authentication, the server responds with a 350 response. The
client must then send the username followed by one or more
space characters followed by the password. If accepted, the
server returns a 250 response and the client should then
retry the original command to which the server responded
with the 450 response. The command should then be processed
by the server normally. If the combination is not valid,
the server will return a 452 response.

Note that the response codes used here were part of the
NNTP V2 specification and are violations of RFC 977. It
is recommended that this command not be implemented, but
use either or both of the other forms of AUTHINFO if such
functionality if required.

3.1.2.1 Responses

250 Authorization accepted
350 Continue with authorization sequence
450 Authorization required for this command
452 Authorization rejected

3.1.3 AUTHINFO GENERIC

AUTHINFO GENERIC authenticator arguments...

AUTHINFO GENERIC is used to identify a specific entity to the
server using arbitrary authentication or identification
protocols. The desired protocol is indicated by the
authenticator parameter, and any number of parameters can
be passed to the authenticator.

When authorization is required, the server will send a 380
response requesting authorization from the client. The
client should enter AUTHINFO GENERIC followed by the
authenticator name, and the arguments if any. The authenticator
and arguments must not contain the sequence "..".

The server will attempt to engage the server end authenticator,
similarly, the client should engage the client end authenticator.
The server end authenticator will then initiate authentication
using the NNTP sockets (if appropriate for that authentication
protocol), using the protocol specified by the authenticator name.
These authentication protocols are not included in this document,
but are similar in structure to those referenced in RFC 1731[7]
for the IMAP-4 protocol.

If the server returns 501, this means that the authenticator
invocation was syntactically incorrect, or that AUTHINFO
GENERIC is not supported. The client should retry using the
AUTHINFO USER command.

If the requested authenticator capability is not found or
there is some other unspecified server program error, the
server returns the 503 response code.

The authenticators converse using their protocol until complete.
If the authentication succeeds, the server authenticator will
terminate with a 281, and the client can continue by reissuing
the command that prompted the 380. If the authentication fails,
the server will respond with a 502.

The client must provide authentication when requested by the
server. The server may request authentication at any
time. Servers may request authentication more than once
during a single session.

When the server authenticator completes, it provides to the
server (by a mechanism herein undefined) the email address
of the user, and potentially what the user is allowed to
access. Once authenticated, the server shall generate a Sender:
line using the email address provided by the authenticator
if it does not match the user-supplied From: line. Additionally,
the server should log the event, including the user's
authenticated email address (if available). This will provide
a means by which subsequent statistics generation can
associate newsgroup references with unique entities - not
necessarily by name.

3.1.3.1 Responses

281 Authentication succeeded
380 Authentication required
501 Command not supported or Command syntax error
502 No permission
503 Program error, function not performed
nnn authenticator-specific protocol.

<ANOTHER BIG SNIP>

-----BEGIN PGP SIGNATURE-----
Version: 2.6.2

iQCVAwUBMhn4UqJSmGBRGHaRAQEtrwQAhl910MSHPL9vNL1NDcNnJOIZc6+JHkPX
7QlCX2EF7fr6mxrEawOxnq9zW3u/bSNwcvL0+Jq6y6DuFAdUQYhSBwy7ysmnjz9m
tMvcmjlL3ZE+iZQAxGlSrdn7ii5MxynFEgmK4zX9yI7S0dwNEf2cZaEW8BwZhN7w
1MXAHmxtkX8=
=/mvT
-----END PGP SIGNATURE-----