Internet DRAFT - draft-wendt-modern-identity-registry
draft-wendt-modern-identity-registry
modern C. Wendt
Internet-Draft Comcast
Intended status: Standards Track March 13, 2017
Expires: September 14, 2017
Identity Registry (idreg)
draft-wendt-modern-identity-registry-01
Abstract
This document will describe an approach for how a distributed
identity registry model might look. It will consider both public
registry components of the data model necessary for routing calls
from one globally routable identity to another. It will also
consider part of the private registry components a provider may need
to manage associations with users or customers. Other topics include
provider associations, application or service association, and the
ability to support multiple identities associated with a user/
subscriber (e.g. telephone number and e-mail identity).
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
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."
This Internet-Draft will expire on September 14, 2017.
Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
Wendt Expires September 14, 2017 [Page 1]
Internet-Draft idreg March 2017
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.1. Identity Data Model . . . . . . . . . . . . . . . . . . . 3
3.2. Other identity registry attributes . . . . . . . . . . . 4
4. Message and Control Flows . . . . . . . . . . . . . . . . . . 5
4.1. Queries . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.2. Allocation/Assignment . . . . . . . . . . . . . . . . . . 5
4.2.1. API definition . . . . . . . . . . . . . . . . . . . 5
4.2.2. Example . . . . . . . . . . . . . . . . . . . . . . . 7
4.3. Update Entry/Port . . . . . . . . . . . . . . . . . . . . 7
4.3.1. API definition . . . . . . . . . . . . . . . . . . . 7
4.4. Removal/de-allocation . . . . . . . . . . . . . . . . . . 8
4.4.1. API definition . . . . . . . . . . . . . . . . . . . 8
5. Security Considerations . . . . . . . . . . . . . . . . . . . 9
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 9
7.1. Normative References . . . . . . . . . . . . . . . . . . 9
7.2. Informative References . . . . . . . . . . . . . . . . . 9
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 9
1. Introduction
There are many useful VoIP and user to user communications
applications that desire the ability to provide services that don't
depend on a single entity or provider to manage the end-to-end
identities associated with that application. For example, using the
VoIP protocol, SIP [RFC3261], the telephone network provides a
federated mechanism that using a publicly known identity, the
telephone number, a customer of a telephone provider A can call a
customer of telephone provider B based on managed routing databases
and routing rules. XMPP [RFC6120] is another example of a protocol
that allowed federation of communications based on the username and
domain of the host of the XMPP server. Each of these examples uses
service specific databases or registries that are generally protocol
or application specific, however today application providers general
provide many applications or services for a user which generally
share the use of common communications identities like telephone
numbers, e-mail identities, or identities associated with web based
IdPs.
Wendt Expires September 14, 2017 [Page 2]
Internet-Draft idreg March 2017
2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119].
3. Overview
The identity registry model proposed in this document supports the
model where there are a few actors in the model relevant to providing
communications services.
o Provider - An entity that provide a service to customers and
manages there identity in the network.
o User/Subscriber - The entity that is using the services of the
provider.
o Service Identity - A globally unique identifier representing a
application or service being made available to users/subscribers
by multiple providers.
o Public Identity - A publicly known identity that the user
associates with a service. This identity must be globally unique
to a user/subscriber. It must also be provably associated to a
given user/subscriber that claims the association.
o Routing Identity - A uniquely and globally routable identity used
specifically in signaling calls between users.
This data model can be used to build the shared data between
providers that support the federated service in order for users that
are associated with one provider to call another provider.
3.1. Identity Data Model
Wendt Expires September 14, 2017 [Page 3]
Internet-Draft idreg March 2017
___________
| |
| User/ |\
| Subscriber| \
| (Private) | \
|___________| Uses Services of
| ___\_______
| | |
Subscribes to | Provider |
| |__________|
_____|_____ /
| | Offers a
| Service | /
| Identity |/
|___________|
|
|
Using (one or more)
|
_________________|___________________
_____|_____ _____|_____ _____|_____
| | | | | |
| Public | | Public | | Public |
| Identity 1| | Identity 2| ... | Identity N|
|___________| |___________| |___________|
|________________|__________________|
|
is network addressable by
____|_____
| |
| Routing |
| Identity |
|__________|
3.2. Other identity registry attributes
The identity registry MUST support functions such as the following:
o The ability to query for available/unused identities for the
purposes of either identifying conflicts before committing to the
registry or identify unused identities that are part of a pool
(e.g. telephone numbers)
o The ability to allocate identities for future use at individual
levels or at block levels, such as NPA-NXX level telephone numbers
or perhaps wildcard identities, e.g. *@example.com.
Wendt Expires September 14, 2017 [Page 4]
Internet-Draft idreg March 2017
o The ability to update/transfer/port identities from one provider
to another provider.
o The ability to digitally sign transactions to a provider for
validation of legitimate transactions. Or forensic analysis of
illegitimate transactions.
It is anticipated that this identity registry would be used with
[I-D.wendt-modern-drip] for supporting a continuously and timely
updated local registry for a given service identity the provider is
offering.
4. Message and Control Flows
4.1. Queries
Typical queries for finding a globally routable identity should be in
the context of a public identity and service identity for an
allocated routing identity.
4.2. Allocation/Assignment
When a provider customer has decided to allocate a given single or
block level set of telephone numbers there is a PUT command that
allocates the number, given the number wasn't already allocated
between the GET and the PUT. As a result of a successful allocation,
the telephone number will be removed from the unallocated bucket.
4.2.1. API definition
Wendt Expires September 14, 2017 [Page 5]
Internet-Draft idreg March 2017
Request:
PUT /idreg/createidentity
Pass the following object (JSON) in the body.
---------------------------------------------------------------
Property Type Description
---------------------------------------------------------------
user_type string (MAND) Type representing user/sub
user_type_id string (MAND) ID associated with user
Example: accountID of user
user_info stringified (OPT) User specific metadata
JSON
service_id string (MAND) Service type identifier
Example: "pstn", "voip". "volte"
public_id string (MAND) User associated service
identifier. Example: telephone
number
An Authorization Header MUST be included with a JWT including
timestamp, x5u, and signature that will be associated with this
transaction.
Response:
---------------------------------------------------------------
Code Status
---------------------------------------------------------------
201 user profile created, associate public id,
returns new routing ID
200 user profile and public id association already exists
returns the same routing ID (Idempotent)
204 service identifier not found
400 input errors
401 unauthorized API access - Signature validation failed
5xx errors related to DB access and other system anomalies
For HTTP/1.1 200 OK and HTTP/1.1 201 Created responses:
----------------------------------------------------------------
Property Type Description
----------------------------------------------------------------
user_id string Globally Unique ID (UUID) for user.
routing_id string routing ID
Wendt Expires September 14, 2017 [Page 6]
Internet-Draft idreg March 2017
4.2.2. Example
As part of the allocation, the service provider will be required to
provide following information:
o publicID: telephone number in e.164 format (e.g., +12155551212).
o serviceID: "voip" by default, other services potentially in
future.
o routingID: SIP URI with telephone number + domain representing
service provider of record (e.g.,
sip:+12155551212@voip.example.com).
o timestamp: a timestamp retrieved from a common NTP server
representing time of allocation, used for validating which service
provider allocated first in race condition scenarios, and just for
logging and historical reference in general.
o x5u: used for validation of signature
o signature: using a provider level [RFC5280] based private key/
certificate, the provider MUST sign the information above to
validate the change to the registry.
4.3. Update Entry/Port
If a provider needs to update information related to an allocated
entry, such as adding a publicID, modify routingID, etc. or if there
is a port where a new service provider will overwrite the entry with
new information, the API should be the same.
There is a GET operation to read the current entry information, if
the provider needs this information, (e.g., read/modify/write).
There also is a PUT operation that will write the updated entry
information. This will require a new timestamp and signature to
validate the security of the operation and logging/historical
purposes.
4.3.1. API definition
The PUT /idreg/createidentity API can be used for updates to entries
as it's an idempotent API. For porting of telephone numbers either
createidentity or a combination of the delete described in the next
section and createidentity can be used.
Wendt Expires September 14, 2017 [Page 7]
Internet-Draft idreg March 2017
4.4. Removal/de-allocation
If a provider wants to remove an entry for the case where a customer
removes his service and no longer wants to own or associate a public
identity, a DELETE operation will be provided that will delete the
entry, and for the case of a telephone number, will put the telephone
number back in the pool of unallocated numbers.
4.4.1. API definition
Request:
DELETE /idreg/identitymapping/serviceid/:id/publicid/:id
Pass the following object (JSON) in the body.
---------------------------------------------------------------
Property Type Description
---------------------------------------------------------------
service_id string (MAND) Service type identifier
Example: "pstn", "voip". "volte"
public_id string (MAND) User associated service
identifier. Example: telephone
number
An Authorization Header MUST be included with a JWT including
timestamp, x5u, and signature that will be associated with this
transaction.
Response:
---------------------------------------------------------------
Code Status
---------------------------------------------------------------
200 public ID association deleted
204 record with service_id and public_id in request URI not
found
400 input errors
401 unauthorized API access - Signature validation failed
5xx errors related to DB access and other system anomalies
For HTTP/1.1 200 OK and HTTP/1.1 201 Created responses:
----------------------------------------------------------------
Property Type Description
----------------------------------------------------------------
user_id string Globally Unique ID (UUID) for user.
routing_id string routing ID
Wendt Expires September 14, 2017 [Page 8]
Internet-Draft idreg March 2017
5. Security Considerations
TBD
6. Acknowledgements
Thanks to Harsha Bellur for collaboration on developing this model
and it's implementation.
7. References
7.1. Normative References
[I-D.wendt-modern-drip]
Bellur, H. and C. Wendt, "Distributed Registry Protocol",
draft-wendt-modern-drip-01 (work in progress), July 2016.
7.2. Informative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>.
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
A., Peterson, J., Sparks, R., Handley, M., and E.
Schooler, "SIP: Session Initiation Protocol", RFC 3261,
DOI 10.17487/RFC3261, June 2002,
<http://www.rfc-editor.org/info/rfc3261>.
[RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S.,
Housley, R., and W. Polk, "Internet X.509 Public Key
Infrastructure Certificate and Certificate Revocation List
(CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008,
<http://www.rfc-editor.org/info/rfc5280>.
[RFC6120] Saint-Andre, P., "Extensible Messaging and Presence
Protocol (XMPP): Core", RFC 6120, DOI 10.17487/RFC6120,
March 2011, <http://www.rfc-editor.org/info/rfc6120>.
Author's Address
Wendt Expires September 14, 2017 [Page 9]
Internet-Draft idreg March 2017
Chris Wendt
Comcast
One Comcast Center
Philadelphia, PA 19103
USA
Email: chris-ietf@chriswendt.net
Wendt Expires September 14, 2017 [Page 10]