One approach would be to create a comments channel with an entries fieldtype (with sources checked for any channels that you want to allow commenting; limit set to 1) called 'relatedEntry' (or whatever you like). On your article template, include a for loop to display existing comments relateTo the entry. Check to see if there is a current user, and if yes, include a comments form. In the comments form place a hidden field with the id for the current entry. Something like this:
<article>
{{ entry.title }}
{{ entry.body }}
</article>
<ul class="comments">
{% for comment in craft.entries.section('comments').relatedTo(entry) %}
<li>{{ comment.author.fullName }}<br/>{{ comment.body }}</li>
{% endfor %}
</ul>
{% if currentuser %}
<form method="post" action="" accept-charset="UTF-8">
<input type="hidden" name="action" value="entries/saveEntry">
<input type="hidden" name="sectionId" value="2">
<input type="hidden" name="redirect" value="{{ entry.url }}">
<input type="hidden" name="fields[relatedEntry][]" value="{{ entry.id }}">
<label for="comment">Comment</label><br/>
<input type="text" name="comment">
</form>
{% endif %}
name="fields[relatedEntry][] is formated this way because related fields expect an array even if it's only a single related entry.
You could also create threaded comments by creating another related entries fieldtype called parentComment (or whatever you like) and including that as a hidden field in the form as well (you might need ajax or javascript here to help set the hidden field value from the 'comment' link).
To make it a little nicer you could also load the comments form via ajax or reveal it with javascript.
Untested, but hopefully this will point you in the right direction.